QGIS API Documentation  3.23.0-Master (eb871beae0)
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 "qgsunittypes.h"
24 #include "qgsmapunitscale.h"
25 
26 #include <QPainter>
27 
37 {
38 
39  public:
40 
42 
43  QVariantMap properties() const override;
44  void readProperties( const QVariantMap &props ) override;
45 
54  void setBlurLevel( const double level ) { mBlurLevel = level; }
55 
64  double blurLevel() const { return mBlurLevel; }
65 
74  void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; }
75 
84  QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; }
85 
94  void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; }
95 
104  const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; }
105 
112  void setOffsetAngle( const int angle ) { mOffsetAngle = angle; }
113 
120  int offsetAngle() const { return mOffsetAngle; }
121 
129  void setOffsetDistance( const double distance ) { mOffsetDist = distance; }
130 
138  double offsetDistance() const { return mOffsetDist; }
139 
147  void setOffsetUnit( const QgsUnitTypes::RenderUnit unit ) { mOffsetUnit = unit; }
148 
156  QgsUnitTypes::RenderUnit offsetUnit() const { return mOffsetUnit; }
157 
165  void setOffsetMapUnitScale( const QgsMapUnitScale &scale ) { mOffsetMapUnitScale = scale; }
166 
174  const QgsMapUnitScale &offsetMapUnitScale() const { return mOffsetMapUnitScale; }
175 
181  void setColor( const QColor &color ) { mColor = color; }
182 
188  QColor color() const { return mColor; }
189 
196  void setOpacity( const double opacity ) { mOpacity = opacity; }
197 
204  double opacity() const { return mOpacity; }
205 
212  void setBlendMode( const QPainter::CompositionMode mode ) { mBlendMode = mode; }
213 
220  QPainter::CompositionMode blendMode() const { return mBlendMode; }
221 
222  protected:
223 
224  QRectF boundingRect( const QRectF &rect, const QgsRenderContext &context ) const override;
225  void draw( QgsRenderContext &context ) override;
226 
233  virtual bool exteriorShadow() const = 0;
234 
235  double mBlurLevel = 2.645;
238  int mOffsetAngle = 135;
239  double mOffsetDist = 2.0;
242  double mOpacity = 1.0;
243  QColor mColor;
244  QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_Multiply;
245 
246 };
247 
248 
257 {
258 
259  public:
260 
266  static QgsPaintEffect *create( const QVariantMap &map ) SIP_FACTORY;
267 
269 
270  QString type() const override;
271  QgsDropShadowEffect *clone() const override SIP_FACTORY;
272 
273  protected:
274 
275  bool exteriorShadow() const override;
276 
277 };
278 
288 {
289 
290  public:
291 
297  static QgsPaintEffect *create( const QVariantMap &map ) SIP_FACTORY;
298 
300 
301  QString type() const override;
302  QgsInnerShadowEffect *clone() const override SIP_FACTORY;
303 
304  protected:
305 
306  bool exteriorShadow() const override;
307 
308 };
309 
310 #endif // QGSSHADOWEFFECT_H
311 
A paint effect which draws an offset and optionally blurred drop shadow.
A paint effect which draws an offset and optionally blurred drop shadow within a picture.
Struct for storing maximum and minimum scales for measurements in map units.
Base class for visual effects which can be applied to QPicture drawings.
virtual void readProperties(const QVariantMap &props)=0
Reads a string map of an effect's properties and restores the effect to the state described by the pr...
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
virtual QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const
Returns the bounding rect required for drawing the effect.
virtual QVariantMap properties() const =0
Returns the properties describing the paint effect encoded in a string format.
virtual void draw(QgsRenderContext &context)=0
Handles drawing of the effect's result on to the specified render context.
virtual QString type() const =0
Returns the effect type.
Contains information about the context of a rendering operation.
Base class for paint effects which offset, blurred shadows.
int offsetAngle() const
Returns the angle used for offsetting the shadow.
void setOffsetAngle(const int angle)
Sets the angle for offsetting the shadow.
void setOpacity(const double opacity)
Sets the opacity for the effect.
void setColor(const QColor &color)
Sets the color for the shadow.
double opacity() const
Returns the opacity for the effect.
const QgsMapUnitScale & blurMapUnitScale() const
Returns the map unit scale used for the shadow blur strength (radius).
QColor color() const
Returns the color used for the shadow.
virtual bool exteriorShadow() const =0
Specifies whether the shadow is drawn outside the picture or within the picture.
QPainter::CompositionMode blendMode() const
Returns the blend mode for the effect.
void setBlurUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the shadow blur level (radius).
void setBlurLevel(const double level)
Sets blur level (radius) for the shadow.
void setOffsetDistance(const double distance)
Sets the distance for offsetting the shadow.
QgsMapUnitScale mOffsetMapUnitScale
double blurLevel() const
Returns the blur level (radius) for the shadow.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shadow offset distance.
QgsUnitTypes::RenderUnit blurUnit() const
Returns the units used for the shadow blur level (radius).
void setOffsetUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the shadow offset distance.
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale used for the shadow offset distance.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the shadow offset distance.
void setBlendMode(const QPainter::CompositionMode mode)
Sets the blend mode for the effect.
double offsetDistance() const
Returns the distance used for offsetting the shadow.
QgsMapUnitScale mBlurMapUnitScale
void setBlurMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the shadow blur strength (radius).
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:168
@ RenderMillimeters
Millimeters.
Definition: qgsunittypes.h:169
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
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_NODEFAULTCTORS
Definition: qgis_sip.h:101