QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
35 switch ( mBlurMethod )
38 drawStackBlur( context );
41 drawGaussianBlur( context );
51 drawBlurredImage( context, im );
58 drawBlurredImage( context, *im );
62 void QgsBlurEffect::drawBlurredImage(
QgsRenderContext &context, QImage &image )
67 QPainter *painter = context.
painter();
69 painter->setCompositionMode( mBlendMode );
70 painter->drawImage(
imageOffset( context ), image );
77 props.insert( QStringLiteral(
"enabled" ),
mEnabled ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) );
78 props.insert( QStringLiteral(
"draw_mode" ), QString::number(
static_cast< int >(
mDrawMode ) ) );
79 props.insert( QStringLiteral(
"blend_mode" ), QString::number(
static_cast< int >( mBlendMode ) ) );
80 props.insert( QStringLiteral(
"opacity" ), QString::number( mOpacity ) );
81 props.insert( QStringLiteral(
"blur_level" ), QString::number( mBlurLevel ) );
84 props.insert( QStringLiteral(
"blur_method" ), QString::number(
static_cast< int >( mBlurMethod ) ) );
91 QPainter::CompositionMode mode =
static_cast< QPainter::CompositionMode
>( props.value( QStringLiteral(
"blend_mode" ) ).toInt( &ok ) );
96 if ( props.contains( QStringLiteral(
"transparency" ) ) )
98 double transparency = props.value( QStringLiteral(
"transparency" ) ).toDouble( &ok );
101 mOpacity = 1.0 - transparency;
106 double opacity = props.value( QStringLiteral(
"opacity" ) ).toDouble( &ok );
113 mEnabled = props.value( QStringLiteral(
"enabled" ), QStringLiteral(
"1" ) ).toInt();
115 double level = props.value( QStringLiteral(
"blur_level" ) ).toDouble( &ok );
119 if ( !props.contains( QStringLiteral(
"blur_unit" ) ) )
122 mBlurLevel *= 0.2645;
130 mBlurMethod = method;
145 return rect.adjusted( -spread, -spread, spread, spread );
QgsBlurEffect * clone() const override
Duplicates an effect by creating a deep copy of the effect.
DrawMode
Drawing modes for effects.
void draw(QgsRenderContext &context) override
Handles drawing of the effect's result on to the specified render context.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
A paint effect which blurs a source picture, using a number of different blur methods.
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
static void multiplyOpacity(QImage &image, double factor)
Multiplies opacity of image pixel values by a factor.
BlurMethod
Available blur methods (algorithms)
static Q_INVOKABLE QgsUnitTypes::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string.
@ StackBlur
Stack blur, a fast but low quality blur. Valid blur level values are between 0 - 16.
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...
QPointF imageOffset(const QgsRenderContext &context) const
Returns the offset which should be used when drawing the source image on to a destination render cont...
double blurLevel() const
Returns the blur level (radius)
QMap< QString, QString > QgsStringMap
static QImage * gaussianBlur(QImage &image, int radius)
Performs a gaussian blur on an image.
static QgsPaintEffect * create(const QgsStringMap &map)
Creates a new QgsBlurEffect effect from a properties string map.
QImage * sourceAsImage(QgsRenderContext &context)
Returns the source QPicture rendered to a new QImage.
const QPicture * source() const
Returns the source QPicture.
QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const override
Returns the bounding rect required for drawing the effect.
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.
QgsBlurEffect()=default
Constructor for QgsBlurEffect.
static void stackBlur(QImage &image, int radius, bool alphaOnly=false)
Performs a stack blur on an image.
double opacity() const
Returns the opacity for the effect.
QPainter * painter()
Returns the destination QPainter for the render operation.
bool enabled() const
Returns whether the effect is enabled.
@ GaussianBlur
Gaussian blur, a slower but high quality blur. Blur level values are the distance in pixels for the b...
static QgsMapUnitScale decodeMapUnitScale(const QString &str)