36  switch ( mBlurMethod )
 
   39      drawStackBlur( context );
 
   42      drawGaussianBlur( context );
 
   53  drawBlurredImage( context, im );
 
   62    drawBlurredImage( context, *im );
 
   66void QgsBlurEffect::drawBlurredImage( 
QgsRenderContext &context, QImage &image )
 
   71  QPainter *painter = context.
painter();
 
   73  painter->setCompositionMode( mBlendMode );
 
   74  painter->drawImage( 
imageOffset( context ), image );
 
   80  props.insert( QStringLiteral( 
"enabled" ), 
mEnabled ? QStringLiteral( 
"1" ) : QStringLiteral( 
"0" ) );
 
   81  props.insert( QStringLiteral( 
"draw_mode" ), QString::number( 
static_cast< int >( 
mDrawMode ) ) );
 
   82  props.insert( QStringLiteral( 
"blend_mode" ), QString::number( 
static_cast< int >( mBlendMode ) ) );
 
   83  props.insert( QStringLiteral( 
"opacity" ), QString::number( mOpacity ) );
 
   84  props.insert( QStringLiteral( 
"blur_level" ), QString::number( mBlurLevel ) );
 
   87  props.insert( QStringLiteral( 
"blur_method" ), QString::number( 
static_cast< int >( mBlurMethod ) ) );
 
   94  const QPainter::CompositionMode mode = 
static_cast< QPainter::CompositionMode 
>( props.value( QStringLiteral( 
"blend_mode" ) ).toInt( &ok ) );
 
   99  if ( props.contains( QStringLiteral( 
"transparency" ) ) )
 
  101    const double transparency = props.value( QStringLiteral( 
"transparency" ) ).toDouble( &ok );
 
  104      mOpacity = 1.0 - transparency;
 
  109    const double opacity = props.value( QStringLiteral( 
"opacity" ) ).toDouble( &ok );
 
  116  mEnabled = props.value( QStringLiteral( 
"enabled" ), QStringLiteral( 
"1" ) ).toInt();
 
  118  const double level = props.value( QStringLiteral( 
"blur_level" ) ).toDouble( &ok );
 
  122    if ( !props.contains( QStringLiteral( 
"blur_unit" ) ) )
 
  125      mBlurLevel *= 0.2645;
 
  133    mBlurMethod = method;
 
  148  const double spread = 
blurLevel * 2.0 + 10;
 
  149  return rect.adjusted( -spread, -spread, spread, spread );
 
A paint effect which blurs a source picture, using a number of different blur methods.
 
QgsBlurEffect * clone() const override
Duplicates an effect by creating a deep copy of the effect.
 
QVariantMap properties() const override
Returns the properties describing the paint effect encoded in a string format.
 
void draw(QgsRenderContext &context) override
Handles drawing of the effect's result on to the specified render context.
 
QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const override
Returns the bounding rect required for drawing the effect.
 
static QgsPaintEffect * create(const QVariantMap &map)
Creates a new QgsBlurEffect effect from a properties string map.
 
QgsBlurEffect()=default
Constructor for QgsBlurEffect.
 
void readProperties(const QVariantMap &props) override
Reads a string map of an effect's properties and restores the effect to the state described by the pr...
 
BlurMethod
Available blur methods (algorithms)
 
@ GaussianBlur
Gaussian blur, a slower but high quality blur. Blur level values are the distance in pixels for the b...
 
@ StackBlur
Stack blur, a fast but low quality blur. Valid blur level values are between 0 - 16.
 
double opacity() const
Returns the opacity for the effect.
 
double blurLevel() const
Returns the blur level (radius)
 
static void multiplyOpacity(QImage &image, double factor, QgsFeedback *feedback=nullptr)
Multiplies opacity of image pixel values by a factor.
 
static QImage * gaussianBlur(QImage &image, int radius, QgsFeedback *feedback=nullptr)
Performs a gaussian blur on an image.
 
static void stackBlur(QImage &image, int radius, bool alphaOnly=false, QgsFeedback *feedback=nullptr)
Performs a stack blur on an image.
 
Base class for visual effects which can be applied to QPicture drawings.
 
QPointF imageOffset(const QgsRenderContext &context) const
Returns the offset which should be used when drawing the source image on to a destination render cont...
 
const QPicture * source() const
Returns the source QPicture.
 
bool enabled() const
Returns whether the effect is enabled.
 
DrawMode
Drawing modes for effects.
 
QImage * sourceAsImage(QgsRenderContext &context)
Returns the source QPicture rendered to a new QImage.
 
Contains information about the context of a rendering operation.
 
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
 
QPainter * painter()
Returns the destination QPainter for the render operation.
 
QgsFeedback * feedback() const
Returns the feedback object that can be queried regularly during rendering to check if rendering shou...
 
Scoped object for saving and restoring a QPainter object's state.
 
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
 
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
 
static Q_INVOKABLE Qgis::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
 
static Q_INVOKABLE QString encodeUnit(Qgis::DistanceUnit unit)
Encodes a distance unit to a string.