QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
QgsEffectStack Class Reference

A paint effect which consists of a stack of other chained paint effects. More...

#include <qgseffectstack.h>

Inheritance diagram for QgsEffectStack:
Inheritance graph
[legend]

Public Member Functions

 QgsEffectStack ()=default
 Constructor for empty QgsEffectStack. More...
 
 QgsEffectStack (const QgsEffectStack &other)
 
 QgsEffectStack (const QgsPaintEffect &effect)
 Creates a new QgsEffectStack effect from a single initial effect. More...
 
 QgsEffectStack (QgsEffectStack &&other)
 Move constructor. More...
 
 ~QgsEffectStack () override
 
void appendEffect (QgsPaintEffect *effect)
 Appends an effect to the end of the stack. More...
 
bool changeEffect (int index, QgsPaintEffect *effect)
 Replaces the effect at a specified position within the stack. More...
 
QgsEffectStackclone () const override
 Duplicates an effect by creating a deep copy of the effect. More...
 
int count () const
 Returns count of effects contained by the stack. More...
 
QgsPaintEffecteffect (int index) const
 Returns a pointer to the effect at a specified index within the stack. More...
 
QList< QgsPaintEffect * > * effectList ()
 Returns a pointer to the list of effects currently contained by the stack. More...
 
bool insertEffect (int index, QgsPaintEffect *effect)
 Inserts an effect at a specified index within the stack. More...
 
QgsEffectStackoperator= (const QgsEffectStack &rhs)
 
QgsEffectStackoperator= (QgsEffectStack &&other)
 
QVariantMap properties () const override
 Unused for QgsEffectStack, will always return an empty string map. More...
 
bool readProperties (const QDomElement &element) override
 Restores the effect to the state described by a DOM element. More...
 
void readProperties (const QVariantMap &props) override
 Unused for QgsEffectStack, props parameter will be ignored. More...
 
bool saveProperties (QDomDocument &doc, QDomElement &element) const override
 Saves the current state of the effect to a DOM element. More...
 
QgsPaintEffecttakeEffect (int index)
 Removes an effect from the stack and returns a pointer to it. More...
 
QString type () const override
 Returns the effect type. More...
 
- Public Member Functions inherited from QgsPaintEffect
 QgsPaintEffect ()=default
 Constructor for QgsPaintEffect. More...
 
 QgsPaintEffect (const QgsPaintEffect &other)
 
virtual ~QgsPaintEffect ()
 
virtual void begin (QgsRenderContext &context)
 Begins intercepting paint operations to a render context. More...
 
virtual QgsPaintEffectclone () const =0
 Duplicates an effect by creating a deep copy of the effect. More...
 
DrawMode drawMode () const
 Returns the draw mode for the effect. More...
 
bool enabled () const
 Returns whether the effect is enabled. More...
 
virtual void end (QgsRenderContext &context)
 Ends interception of paint operations to a render context, and draws the result to the render context after being modified by the effect. More...
 
virtual QVariantMap properties () const =0
 Returns the properties describing the paint effect encoded in a string format. More...
 
virtual bool readProperties (const QDomElement &element)
 Restores the effect to the state described by a DOM element. More...
 
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 properties map. More...
 
virtual void render (QPicture &picture, QgsRenderContext &context)
 Renders a picture using the effect. More...
 
virtual bool saveProperties (QDomDocument &doc, QDomElement &element) const
 Saves the current state of the effect to a DOM element. More...
 
void setDrawMode (DrawMode drawMode)
 Sets the draw mode for the effect. More...
 
void setEnabled (bool enabled)
 Sets whether the effect is enabled. More...
 
virtual QString type () const =0
 Returns the effect type. More...
 

Static Public Member Functions

static QgsPaintEffectcreate (const QVariantMap &map)
 Creates a new QgsEffectStack effect. More...
 

Protected Member Functions

void draw (QgsRenderContext &context) override
 Handles drawing of the effect's result on to the specified render context. More...
 
- Protected Member Functions inherited from QgsPaintEffect
virtual QRectF boundingRect (const QRectF &rect, const QgsRenderContext &context) const
 Returns the bounding rect required for drawing the effect. More...
 
virtual void draw (QgsRenderContext &context)=0
 Handles drawing of the effect's result on to the specified render context. More...
 
void drawSource (QPainter &painter)
 Draws the source QPicture onto the specified painter. More...
 
void fixQPictureDpi (QPainter *painter) const
 Applies a workaround to a QPainter to avoid an issue with incorrect scaling when drawing QPictures. More...
 
QPointF imageOffset (const QgsRenderContext &context) const
 Returns the offset which should be used when drawing the source image on to a destination render context. More...
 
const QPicture * source () const
 Returns the source QPicture. More...
 
QImage * sourceAsImage (QgsRenderContext &context)
 Returns the source QPicture rendered to a new QImage. More...
 

Additional Inherited Members

- Public Types inherited from QgsPaintEffect
enum  DrawMode { Modifier , Render , ModifyAndRender }
 Drawing modes for effects. More...
 
- Protected Attributes inherited from QgsPaintEffect
DrawMode mDrawMode = ModifyAndRender
 
bool mEnabled = true
 
bool requiresQPainterDpiFix = true
 

Detailed Description

A paint effect which consists of a stack of other chained paint effects.

Effect stacks can be used to apply multiple paint effects to a QPicture. For instance, an effect stack may blur then apply a drop shadow.

The way in which effects apply to a stack is controlled by the effect's drawMode. Effects can either render their results onto the destination paint device, or just modify the source picture which is drawn by subsequent effects in the stack. For instance, a blur effect with a Modifier drawMode will blur the source picture for the following drop shadow effect without actually drawing the blurred picture to the paint device. If the blur effect had a Render drawMode then the blurred picture will be drawn on the paint device, but the following drop shadow effect will be drawn using the original picture, not the blurred version.

Definition at line 43 of file qgseffectstack.h.

Constructor & Destructor Documentation

◆ QgsEffectStack() [1/4]

QgsEffectStack::QgsEffectStack ( )
default

Constructor for empty QgsEffectStack.

◆ QgsEffectStack() [2/4]

QgsEffectStack::QgsEffectStack ( const QgsEffectStack other)

Definition at line 24 of file qgseffectstack.cpp.

◆ QgsEffectStack() [3/4]

QgsEffectStack::QgsEffectStack ( QgsEffectStack &&  other)

Move constructor.

Definition at line 34 of file qgseffectstack.cpp.

◆ QgsEffectStack() [4/4]

QgsEffectStack::QgsEffectStack ( const QgsPaintEffect effect)
explicit

Creates a new QgsEffectStack effect from a single initial effect.

Parameters
effectinitial effect to add to the stack. The effect will be cloned, so ownership is not transferred to the stack.

Definition at line 40 of file qgseffectstack.cpp.

◆ ~QgsEffectStack()

QgsEffectStack::~QgsEffectStack ( )
override

Definition at line 45 of file qgseffectstack.cpp.

Member Function Documentation

◆ appendEffect()

void QgsEffectStack::appendEffect ( QgsPaintEffect effect)

Appends an effect to the end of the stack.

Parameters
effectQgsPaintEffect to append. Ownership of the effect will be transferred to the stack object.
See also
insertEffect

Definition at line 215 of file qgseffectstack.cpp.

◆ changeEffect()

bool QgsEffectStack::changeEffect ( int  index,
QgsPaintEffect effect 
)

Replaces the effect at a specified position within the stack.

Parameters
indexposition of effect to replace
effectQgsPaintEffect to replace with. Ownership of the effect will be transferred to the stack object.

Definition at line 231 of file qgseffectstack.cpp.

◆ clone()

QgsEffectStack * QgsEffectStack::clone ( ) const
overridevirtual

Duplicates an effect by creating a deep copy of the effect.

Returns
clone of paint effect

Implements QgsPaintEffect.

Definition at line 147 of file qgseffectstack.cpp.

◆ count()

int QgsEffectStack::count ( ) const
inline

Returns count of effects contained by the stack.

Returns
count of effects

Definition at line 134 of file qgseffectstack.h.

◆ create()

QgsPaintEffect * QgsEffectStack::create ( const QVariantMap &  map)
static

Creates a new QgsEffectStack effect.

This method ignores the map parameter, and always returns an empty effect stack.

Parameters
mapunused encoded properties string map
Returns
new QgsEffectStack

Definition at line 72 of file qgseffectstack.cpp.

◆ draw()

void QgsEffectStack::draw ( QgsRenderContext context)
overrideprotectedvirtual

Handles drawing of the effect's result on to the specified render context.

Derived classes must reimplement this method to apply any transformations to the source QPicture and draw the result using the context's painter.

Parameters
contextdestination render context
See also
drawSource

Implements QgsPaintEffect.

Definition at line 79 of file qgseffectstack.cpp.

◆ effect()

QgsPaintEffect * QgsEffectStack::effect ( int  index) const

Returns a pointer to the effect at a specified index within the stack.

Parameters
indexposition of effect to return
Returns
QgsPaintEffect at specified position

Definition at line 256 of file qgseffectstack.cpp.

◆ effectList()

QList< QgsPaintEffect * > * QgsEffectStack::effectList ( )

Returns a pointer to the list of effects currently contained by the stack.

Returns
list of QgsPaintEffects within the stack

Definition at line 251 of file qgseffectstack.cpp.

◆ insertEffect()

bool QgsEffectStack::insertEffect ( int  index,
QgsPaintEffect effect 
)

Inserts an effect at a specified index within the stack.

Parameters
indexposition to insert the effect
effectQgsPaintEffect to insert. Ownership of the effect will be transferred to the stack object.
See also
appendEffect

Definition at line 220 of file qgseffectstack.cpp.

◆ operator=() [1/2]

QgsEffectStack & QgsEffectStack::operator= ( const QgsEffectStack rhs)

Definition at line 50 of file qgseffectstack.cpp.

◆ operator=() [2/2]

QgsEffectStack & QgsEffectStack::operator= ( QgsEffectStack &&  other)

Definition at line 65 of file qgseffectstack.cpp.

◆ properties()

QVariantMap QgsEffectStack::properties ( ) const
overridevirtual

Unused for QgsEffectStack, will always return an empty string map.

Implements QgsPaintEffect.

Definition at line 198 of file qgseffectstack.cpp.

◆ readProperties() [1/2]

bool QgsEffectStack::readProperties ( const QDomElement &  element)
overridevirtual

Restores the effect to the state described by a DOM element.

Parameters
elementDOM element describing an effect's state
Returns
true if read was successful
See also
saveProperties

Reimplemented from QgsPaintEffect.

Definition at line 175 of file qgseffectstack.cpp.

◆ readProperties() [2/2]

void QgsEffectStack::readProperties ( const QVariantMap &  props)
overridevirtual

Unused for QgsEffectStack, props parameter will be ignored.

Implements QgsPaintEffect.

Definition at line 204 of file qgseffectstack.cpp.

◆ saveProperties()

bool QgsEffectStack::saveProperties ( QDomDocument &  doc,
QDomElement &  element 
) const
overridevirtual

Saves the current state of the effect to a DOM element.

The default behavior is to save the properties string map returned by properties().

Parameters
docdestination DOM document
elementdestination DOM element
Returns
true if save was successful
See also
readProperties

Reimplemented from QgsPaintEffect.

Definition at line 152 of file qgseffectstack.cpp.

◆ takeEffect()

QgsPaintEffect * QgsEffectStack::takeEffect ( int  index)

Removes an effect from the stack and returns a pointer to it.

Parameters
indexposition of effect to take

Definition at line 243 of file qgseffectstack.cpp.

◆ type()

QString QgsEffectStack::type ( ) const
inlineoverridevirtual

Returns the effect type.

Returns
unique string representation of the effect type

Implements QgsPaintEffect.

Definition at line 77 of file qgseffectstack.h.


The documentation for this class was generated from the following files: