QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
28 for (
int i = 0; i < other.
count(); ++i )
37 std::swap( mEffectList, other.mEffectList );
57 for (
int i = 0; i < rhs.
count(); ++i )
67 std::swap( mEffectList, other.mEffectList );
81 QPainter *destPainter = context.
painter();
86 QPicture *sourcePic =
new QPicture( *
source() );
87 QPicture *currentPic = sourcePic;
88 QList< QPicture * > results;
89 for (
int i = mEffectList.count() - 1; i >= 0; --i )
97 QPicture *pic =
nullptr;
98 if (
effect->
type() == QLatin1String(
"drawSource" ) )
108 QPicture *resultPic =
new QPicture();
109 QPainter p( resultPic );
118 results << resultPic;
121 currentPic = resultPic;
129 for (
int i = 0; i < mEffectList.count(); ++i )
131 if ( !mEffectList[i]->
enabled() )
136 QPicture *pic = results.takeLast();
141 context.
painter()->drawPicture( 0, 0, *pic );
155 if ( element.isNull() )
160 QDomElement effectElement = doc.createElement( QStringLiteral(
"effect" ) );
161 effectElement.setAttribute( QStringLiteral(
"type" ),
type() );
162 effectElement.setAttribute( QStringLiteral(
"enabled" ),
mEnabled );
171 element.appendChild( effectElement );
177 if ( element.isNull() )
182 mEnabled = ( element.attribute( QStringLiteral(
"enabled" ), QStringLiteral(
"0" ) ) != QLatin1String(
"0" ) );
187 const QDomNodeList childNodes = element.childNodes();
188 for (
int i = 0; i < childNodes.size(); ++i )
190 const QDomElement childElement = childNodes.at( i ).toElement();
209 void QgsEffectStack::clearStack()
211 qDeleteAll( mEffectList );
217 mEffectList.append(
effect );
222 if ( index < 0 || index > mEffectList.count() )
227 mEffectList.insert( index,
effect );
233 if ( index < 0 || index >= mEffectList.count() )
238 delete mEffectList.at( index );
239 mEffectList[index] =
effect;
245 if ( index < 0 || index >= mEffectList.count() )
248 return mEffectList.takeAt( index );
258 if ( index >= 0 && index < mEffectList.count() )
260 return mEffectList.at( index );
~QgsEffectStack() override
bool requiresQPainterDpiFix
virtual void render(QPicture &picture, QgsRenderContext &context)
Renders a picture using the effect.
QgsEffectStack()=default
Constructor for empty QgsEffectStack.
void fixQPictureDpi(QPainter *painter) const
Applies a workaround to a QPainter to avoid an issue with incorrect scaling when drawing QPictures.
void setPainter(QPainter *p)
Sets the destination QPainter for the render operation.
Contains information about the context of a rendering operation.
QVariantMap properties() const override
Unused for QgsEffectStack, will always return an empty string map.
virtual bool saveProperties(QDomDocument &doc, QDomElement &element) const
Saves the current state of the effect to a DOM element.
QgsPaintEffect * createEffect(const QString &name, const QVariantMap &properties=QVariantMap()) const
Creates a new paint effect given the effect name and properties map.
bool insertEffect(int index, QgsPaintEffect *effect)
Inserts an effect at a specified index within the stack.
@ Modifier
The result of the effect is not rendered, but is passed on to following effects in the stack.
@ Render
The result of the effect is rendered on the destination, but does not affect subsequent effects in th...
bool readProperties(const QDomElement &element) override
Restores the effect to the state described by a DOM element.
void draw(QgsRenderContext &context) override
Handles drawing of the effect's result on to the specified render context.
QString type() const override
Returns the effect type.
QgsEffectStack * clone() const override
Duplicates an effect by creating a deep copy of the effect.
QgsPaintEffect * effect(int index) const
Returns a pointer to the effect at a specified index within the stack.
QgsPaintEffect * takeEffect(int index)
Removes an effect from the stack and returns a pointer to it.
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
QList< QgsPaintEffect * > * effectList()
Returns a pointer to the list of effects currently contained by the stack.
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...
Scoped object for saving and restoring a QPainter object's state.
bool saveProperties(QDomDocument &doc, QDomElement &element) const override
Saves the current state of the effect to a DOM element.
int count() const
Returns count of effects contained by the stack.
static QgsPaintEffectRegistry * paintEffectRegistry()
Returns the application's paint effect registry, used for managing paint effects.
const QPicture * source() const
Returns the source QPicture.
void appendEffect(QgsPaintEffect *effect)
Appends an effect to the end of the stack.
Base class for visual effects which can be applied to QPicture drawings.
QPainter * painter()
Returns the destination QPainter for the render operation.
bool enabled() const
Returns whether the effect is enabled.
static QgsPaintEffect * create(const QVariantMap &map)
Creates a new QgsEffectStack effect.
QgsEffectStack & operator=(const QgsEffectStack &rhs)
virtual QString type() const =0
Returns the effect type.
bool changeEffect(int index, QgsPaintEffect *effect)
Replaces the effect at a specified position within the stack.
A paint effect which consists of a stack of other chained paint effects.