QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgspainteffectregistry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgspainteffectregistry.h
3 ------------------------
4 begin : January 2015
5 copyright : (C) 2015 Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSPAINTEFFECTREGISTRY_H
17#define QGSPAINTEFFECTREGISTRY_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
21
22#include <QDomDocument>
23#include <QDomElement>
24#include <QMap>
25#include <QVariantMap>
26
27class QgsPaintEffect;
29
41{
42 public:
43
49 QgsPaintEffectAbstractMetadata( const QString &name, const QString &visibleName );
50
52
58 QString name() const { return mName; }
59
65 QString visibleName() const { return mVisibleName; }
66
72 virtual QgsPaintEffect *createPaintEffect( const QVariantMap &map ) = 0 SIP_FACTORY;
73
79 virtual QgsPaintEffectWidget *createWidget() SIP_FACTORY { return nullptr; }
80
81 protected:
82 QString mName;
83 QString mVisibleName;
84
85};
86
87typedef QgsPaintEffect *( *QgsPaintEffectCreateFunc )( const QVariantMap & ) SIP_SKIP;
88typedef QgsPaintEffectWidget *( *QgsPaintEffectWidgetFunc )() SIP_SKIP;
89
98{
99
100 public:
101
110 QgsPaintEffectMetadata( const QString &name, const QString &visibleName,
112 QgsPaintEffectWidgetFunc pfWidget = nullptr ) SIP_SKIP
114 , mCreateFunc( pfCreate )
115 , mWidgetFunc( pfWidget )
116 {}
117
124
132
140
148 QgsPaintEffect *createPaintEffect( const QVariantMap &map ) override SIP_SKIP { return mCreateFunc ? mCreateFunc( map ) : nullptr; }
149
157
158 protected:
161};
162
163
173class CORE_EXPORT QgsPaintEffectRegistry
174{
175 public:
176
179
182
188 QgsPaintEffectAbstractMetadata *effectMetadata( const QString &name ) const;
189
196
204 QgsPaintEffect *createEffect( const QString &name, const QVariantMap &properties = QVariantMap() ) const SIP_FACTORY;
205
213 QgsPaintEffect *createEffect( const QDomElement &element ) const SIP_FACTORY;
214
219 QStringList effects() const;
220
229
236 static bool isDefaultStack( QgsPaintEffect *effect );
237
238 private:
239#ifdef SIP_RUN
241#endif
242
243 QMap<QString, QgsPaintEffectAbstractMetadata *> mMetadata;
244};
245
246#endif //QGSPAINTEFFECTREGISTRY_H
Stores metadata about a paint effect class.
virtual QgsPaintEffectWidget * createWidget()
Create configuration widget for paint effect of this class.
QString visibleName() const
Returns the user visible string representing the paint effect class.
QString name() const
Returns the unique string representing the paint effect class.
virtual QgsPaintEffect * createPaintEffect(const QVariantMap &map)=0
Create a paint effect of this class given an encoded map of properties.
QgsPaintEffectAbstractMetadata(const QString &name, const QString &visibleName)
Construct a new QgsPaintEffectAbstractMetadata.
virtual ~QgsPaintEffectAbstractMetadata()=default
QgsPaintEffectCreateFunc createFunction() const
Returns the paint effect creation function for the paint effect class.
QgsPaintEffectCreateFunc mCreateFunc
QgsPaintEffectWidgetFunc mWidgetFunc
QgsPaintEffect * createPaintEffect(const QVariantMap &map) override
Creates a new paint effect of the metadata's effect class.
void setWidgetFunction(QgsPaintEffectWidgetFunc f)
Sets the paint effect properties widget creation function for the paint effect class.
QgsPaintEffectWidgetFunc widgetFunction() const
Returns the paint effect properties widget creation function for the paint effect class.
QgsPaintEffectWidget * createWidget() override
Creates a new paint effect properties widget for the metadata's effect class.
QgsPaintEffectMetadata(const QString &name, const QString &visibleName, QgsPaintEffectCreateFunc pfCreate, QgsPaintEffectWidgetFunc pfWidget=nullptr)
Create effect metadata from static functions.
QgsPaintEffectAbstractMetadata * effectMetadata(const QString &name) const
Returns the metadata for a specific effect.
QgsPaintEffectRegistry(const QgsPaintEffectRegistry &rh)=delete
QStringList effects() const
Returns a list of known paint effects.
static QgsPaintEffect * defaultStack()
Returns a new effect stack consisting of a sensible selection of default effects.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
QgsPaintEffectRegistry & operator=(const QgsPaintEffectRegistry &rh)=delete
QgsPaintEffect * createEffect(const QString &name, const QVariantMap &properties=QVariantMap()) const
Creates a new paint effect given the effect name and properties map.
bool addEffectType(QgsPaintEffectAbstractMetadata *metadata)
Registers a new effect type.
Base class for effect properties widgets.
Base class for visual effects which can be applied to QPicture drawings.
#define SIP_EXTERNAL
Definition qgis_sip.h:124
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_FACTORY
Definition qgis_sip.h:84
QgsPaintEffect *(* QgsPaintEffectCreateFunc)(const QVariantMap &)
QgsPaintEffectWidget *(* QgsPaintEffectWidgetFunc)()