36   QPainter *painter = context.
painter();
    44     colorisedIm.invertPixels( QImage::InvertRgba );
    50   if ( blurLevel <= 16 )
    57     colorisedIm = QImage( *imb );
    64   QPointF transPt( -offsetDist * std::cos( angleRad + M_PI_2 ),
    65                    -offsetDist * std::sin( angleRad + M_PI_2 ) );
    73     QImage innerShadowIm( colorisedIm.width(), colorisedIm.height(), QImage::Format_ARGB32 );
    74     innerShadowIm.fill( Qt::transparent );
    75     QPainter imPainter( &innerShadowIm );
    78     imPainter.drawImage( transPt.x(), transPt.y(), colorisedIm );
    81     imPainter.setCompositionMode( QPainter::CompositionMode_DestinationIn );
    85     painter->drawImage( 
imageOffset( context ), innerShadowIm );
    89     painter->drawImage( 
imageOffset( context ) + transPt, colorisedIm );
    97   props.insert( QStringLiteral( 
"enabled" ), 
mEnabled ? 
"1" : 
"0" );
    98   props.insert( QStringLiteral( 
"draw_mode" ), QString::number( 
int( 
mDrawMode ) ) );
    99   props.insert( QStringLiteral( 
"blend_mode" ), QString::number( 
int( 
mBlendMode ) ) );
   100   props.insert( QStringLiteral( 
"opacity" ), QString::number( 
mOpacity ) );
   101   props.insert( QStringLiteral( 
"blur_level" ), QString::number( 
mBlurLevel ) );
   104   props.insert( QStringLiteral( 
"offset_angle" ), QString::number( 
mOffsetAngle ) );
   105   props.insert( QStringLiteral( 
"offset_distance" ), QString::number( 
mOffsetDist ) );
   115   QPainter::CompositionMode mode = 
static_cast< QPainter::CompositionMode 
>( props.value( QStringLiteral( 
"blend_mode" ) ).toInt( &ok ) );
   120   if ( props.contains( QStringLiteral( 
"transparency" ) ) )
   122     double transparency = props.value( QStringLiteral( 
"transparency" ) ).toDouble( &ok );
   130     double opacity = props.value( QStringLiteral( 
"opacity" ) ).toDouble( &ok );
   136   mEnabled = props.value( QStringLiteral( 
"enabled" ), QStringLiteral( 
"1" ) ).toInt();
   138   double level = props.value( QStringLiteral( 
"blur_level" ) ).toDouble( &ok );
   142     if ( !props.contains( QStringLiteral( 
"blur_unit" ) ) )
   150   int angle = props.value( QStringLiteral( 
"offset_angle" ) ).toInt( &ok );
   155   double distance = props.value( QStringLiteral( 
"offset_distance" ) ).toDouble( &ok );
   162   if ( props.contains( QStringLiteral( 
"color" ) ) )
   174   spread += blurLevel * 2 + 10;
   175   return rect.adjusted( -spread, -spread, spread, spread );
   198   return QStringLiteral( 
"dropShadow" );
   231   return QStringLiteral( 
"innerShadow" );
 static void multiplyOpacity(QImage &image, double factor)
Multiplies opacity of image pixel values by a factor. 
 
static void overlayColor(QImage &image, const QColor &color)
Overlays a color onto an image. 
 
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const 
Converts a size from the specified units to painter units (pixels). 
 
QString type() const override
Returns the effect type. 
 
bool enabled() const 
Returns whether the effect is enabled. 
 
Base class for visual effects which can be applied to QPicture drawings. 
 
QgsStringMap properties() const override
Returns the properties describing the paint effect encoded in a string format. 
 
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
 
QgsDropShadowEffect * clone() const override
Duplicates an effect by creating a deep copy of the effect. 
 
QgsMapUnitScale mBlurMapUnitScale
 
QMap< QString, QString > QgsStringMap
 
virtual bool exteriorShadow() const =0
Specifies whether the shadow is drawn outside the picture or within the picture. 
 
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) 
 
QImage * sourceAsImage(QgsRenderContext &context)
Returns the source QPicture rendered to a new QImage. 
 
static QString encodeColor(const QColor &color)
 
QgsMapUnitScale mOffsetMapUnitScale
 
bool exteriorShadow() const override
Specifies whether the shadow is drawn outside the picture or within the picture. 
 
QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const override
Returns the bounding rect required for drawing the effect. 
 
QPainter::CompositionMode mBlendMode
 
QPointF imageOffset(const QgsRenderContext &context) const 
Returns the offset which should be used when drawing the source image on to a destination render cont...
 
static Q_INVOKABLE QgsUnitTypes::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string. 
 
A paint effect which draws an offset and optionally blurred drop shadow. 
 
void draw(QgsRenderContext &context) override
Handles drawing of the effect's result on to the specified render context. 
 
bool exteriorShadow() const override
Specifies whether the shadow is drawn outside the picture or within the picture. 
 
DrawMode
Drawing modes for effects. 
 
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string. 
 
QgsInnerShadowEffect * clone() const override
Duplicates an effect by creating a deep copy of the effect. 
 
static QImage * gaussianBlur(QImage &image, int radius)
Performs a gaussian blur on an image. 
 
QString type() const override
Returns the effect type. 
 
A paint effect which draws an offset and optionally blurred drop shadow within a picture. 
 
QgsUnitTypes::RenderUnit mBlurUnit
 
Contains information about the context of a rendering operation. 
 
QPainter * painter()
Returns the destination QPainter for the render operation. 
 
double blurLevel() const 
Returns the blur level (radius) for the shadow. 
 
static void stackBlur(QImage &image, int radius, bool alphaOnly=false)
Performs a stack blur on an image. 
 
void readProperties(const QgsStringMap &props) override
Reads a string map of an effect's properties and restores the effect to the state described by the pr...
 
static QgsPaintEffect * create(const QgsStringMap &map)
Creates a new QgsInnerShadowEffect effect from a properties string map. 
 
Base class for paint effects which offset, blurred shadows. 
 
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
 
double opacity() const 
Returns the opacity for the effect. 
 
QgsUnitTypes::RenderUnit mOffsetUnit
 
const QPicture * source() const 
Returns the source QPicture. 
 
static QColor decodeColor(const QString &str)
 
static QgsPaintEffect * create(const QgsStringMap &map)
Creates a new QgsDropShadowEffect effect from a properties string map.