Krita Source Code Documentation
Loading...
Searching...
No Matches
KisFilterConfiguration Class Reference

#include <kis_filter_configuration.h>

+ Inheritance diagram for KisFilterConfiguration:

Public Member Functions

QBitArray channelFlags () const
 
virtual KisFilterConfigurationSP clone () const
 
KisFilterConfigurationSP cloneWithResourcesSnapshot (KisResourcesInterfaceSP globalResourcesInterface=nullptr) const
 
virtual bool compareTo (const KisPropertiesConfiguration *rhs) const override
 
void createLocalResourcesSnapshot (KisResourcesInterfaceSP globalResourcesInterface=nullptr)
 
virtual QList< KoResourceLoadResultembeddedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
virtual void fromLegacyXML (const QDomElement &)
 
void fromXML (const QDomElement &) override
 
void fromXML (const QDomElement &) override
 
bool fromXML (const QString &xml, bool clear=true) override
 
bool hasLocalResourcesSnapshot () const
 
virtual bool isCompatible (const KisPaintDeviceSP) const
 
 KisFilterConfiguration (const QString &name, qint32 version, KisResourcesInterfaceSP resourcesInterface)
 
virtual QList< KoResourceLoadResultlinkedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
const QString & name () const
 
 Private (const Private &rhs)
 
 Private (const QString &_name, qint32 _version, KisResourcesInterfaceSP _resourcesInterface)
 
QList< KoResourceLoadResultrequiredResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
KisResourcesInterfaceSP resourcesInterface () const
 
void setChannelFlags (QBitArray channelFlags)
 
virtual void setResourcesInterface (KisResourcesInterfaceSP resourcesInterface)
 
QString toXML () const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
qint32 version () const
 
 ~KisFilterConfiguration () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisPropertiesConfiguration
void clearProperties ()
 Clear the map of properties.
 
virtual void dump () const
 
void fromXML (const QDomElement &) override
 
bool fromXML (const QString &xml, bool clear=true) override
 
bool getBool (const QString &name, bool def=false) const
 
KoColor getColor (const QString &name, const KoColor &color=KoColor()) const
 getColor fetch the given property as a KoColor.
 
KisCubicCurve getCubicCurve (const QString &name, const KisCubicCurve &curve=KisCubicCurve()) const
 
double getDouble (const QString &name, double def=0.0) const
 
float getFloat (const QString &name, float def=0.0) const
 
int getInt (const QString &name, int def=0) const
 
void getPrefixedProperties (const QString &prefix, KisPropertiesConfiguration *config) const
 
void getPrefixedProperties (const QString &prefix, KisPropertiesConfigurationSP config) const
 
virtual QMap< QString, QVariant > getProperties () const
 
virtual QList< QString > getPropertiesKeys () const
 
virtual QVariant getProperty (const QString &name) const
 
virtual bool getProperty (const QString &name, QVariant &value) const
 
QString getPropertyLazy (const QString &name, const char *defaultValue) const
 
QStringList getPropertyLazy (const QString &name, const QStringList &defaultValue) const
 
template<typename T >
getPropertyLazy (const QString &name, const T &defaultValue) const
 
QString getString (const QString &name, const QString &def=QString()) const
 
QStringList getStringList (const QString &name, const QStringList &defaultValue=QStringList()) const
 
virtual bool hasProperty (const QString &name) const
 
 KisPropertiesConfiguration ()
 
 KisPropertiesConfiguration (const KisPropertiesConfiguration &rhs)
 
KisPropertiesConfigurationoperator= (const KisPropertiesConfiguration &rhs)
 
void removeProperty (const QString &name)
 
void setPrefixedProperties (const QString &prefix, const KisPropertiesConfiguration *config)
 
void setPrefixedProperties (const QString &prefix, const KisPropertiesConfigurationSP config)
 
void setProperty (const QString &name, const QStringList &value)
 
virtual void setProperty (const QString &name, const QVariant &value)
 
void setPropertyNotSaved (const QString &name)
 Marks a property that should not be saved by toXML.
 
QString toXML () const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
 ~KisPropertiesConfiguration () override
 
- Public Member Functions inherited from KisSerializableConfiguration
 KisSerializableConfiguration ()
 
 KisSerializableConfiguration (const KisSerializableConfiguration &rhs)
 
virtual ~KisSerializableConfiguration ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Public Attributes

QBitArray channelFlags
 
QString name
 
KisResourcesInterfaceSP resourcesInterface = 0
 
qint32 version
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Public Attributes inherited from KisPropertiesConfiguration
QSet< QString > notSavedProperties
 
QMap< QString, QVariant > properties
 

Protected Member Functions

 KisFilterConfiguration (const KisFilterConfiguration &rhs)
 
void setVersion (qint32 version)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Private Member Functions

int sanityDerefUsageCounter ()
 
int sanityRefUsageCounter ()
 

Private Attributes

Private *const d
 

Friends

class KisNodeFilterInterface
 

Additional Inherited Members

- Static Public Member Functions inherited from KisPropertiesConfiguration
static QString escapeString (const QString &string)
 
static QString extractedPrefixKey ()
 
static QString unescapeString (const QString &string)
 

Detailed Description

A KisFilterConfiguration is the serializable representation of the filter parameters. Filters can subclass this class to implement direct accessors to properties, but properties not in the map will not be serialized.

XXX: Use KoProperties here!

Definition at line 25 of file kis_filter_configuration.cc.

Constructor & Destructor Documentation

◆ KisFilterConfiguration() [1/2]

KisFilterConfiguration::KisFilterConfiguration ( const QString & name,
qint32 version,
KisResourcesInterfaceSP resourcesInterface )

◆ KisFilterConfiguration() [2/2]

KisFilterConfiguration::KisFilterConfiguration ( const KisFilterConfiguration & rhs)
protected

Deep copy the filter configFile

Definition at line 61 of file kis_filter_configuration.cc.

◆ ~KisFilterConfiguration()

KisFilterConfiguration::~KisFilterConfiguration ( )
override

Definition at line 67 of file kis_filter_configuration.cc.

68{
69 delete d;
70}

References d.

Member Function Documentation

◆ channelFlags()

QBitArray KisFilterConfiguration::channelFlags ( ) const
Returns
an array with each colorspace channel a true/false bit that indicates whether the channel should be filtered or left alone. It is up to the filter to decide whether channels that are to be left alone are copied to the dest file or not.

◆ clone()

KisFilterConfigurationSP KisFilterConfiguration::clone ( ) const
virtual

◆ cloneWithResourcesSnapshot()

KisFilterConfigurationSP KisFilterConfiguration::cloneWithResourcesSnapshot ( KisResourcesInterfaceSP globalResourcesInterface = nullptr) const
See also
KisRequiredResourcesOperators::cloneWithResourcesSnapshot

Definition at line 137 of file kis_filter_configuration.cc.

138{
139 return KisRequiredResourcesOperators::cloneWithResourcesSnapshot<KisFilterConfigurationSP>(this, globalResourcesInterface);
140}

◆ compareTo()

bool KisFilterConfiguration::compareTo ( const KisPropertiesConfiguration * rhs) const
overridevirtual

Structural comparison between two instances.

Reimplemented from KisPropertiesConfiguration.

Reimplemented in KisCrossChannelFilterConfiguration, and KisMultiChannelFilterConfiguration.

Definition at line 164 of file kis_filter_configuration.cc.

165{
166 const KisFilterConfiguration *otherConfig = dynamic_cast<const KisFilterConfiguration *>(rhs);
167
168 return otherConfig
170 && name() == otherConfig->name()
171 && version() == otherConfig->version()
172 && channelFlags() == otherConfig->channelFlags();
173}
virtual bool compareTo(const KisPropertiesConfiguration *rhs) const

References channelFlags, KisPropertiesConfiguration::compareTo(), name, and version.

◆ createLocalResourcesSnapshot()

void KisFilterConfiguration::createLocalResourcesSnapshot ( KisResourcesInterfaceSP globalResourcesInterface = nullptr)
See also
KisRequiredResourcesOperators::createLocalResourcesSnapshot

Definition at line 127 of file kis_filter_configuration.cc.

128{
130}
void createLocalResourcesSnapshot(T *object, KisResourcesInterfaceSP globalResourcesInterface=nullptr)

References KisRequiredResourcesOperators::createLocalResourcesSnapshot().

◆ embeddedResources()

QList< KoResourceLoadResult > KisFilterConfiguration::embeddedResources ( KisResourcesInterfaceSP globalResourcesInterface) const
virtual
Returns
all the resources that were embedded into (*this) filter. If the resources were already added to the global database, then they are fetched from globalResourcesInterface to save time/memory.

Reimplemented in KisGradientMapFilterConfiguration, and KisHalftoneFilterConfiguration.

Definition at line 153 of file kis_filter_configuration.cc.

154{
155 Q_UNUSED(globalResourcesInterface);
156 return {};
157}

◆ fromLegacyXML()

void KisFilterConfiguration::fromLegacyXML ( const QDomElement & root)
virtual

This function is use to convert from legacy XML as used in .kra file.

Reimplemented in KisMultiChannelFilterConfiguration, KisLevelsFilterConfiguration, KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 72 of file kis_filter_configuration.cc.

73{
75 d->name = root.attribute("name");
76 d->version = root.attribute("version").toInt();
77
78 QDomElement e;
79 for (e = root.firstChildElement("property"); !e.isNull(); e = e.nextSiblingElement()) {
80 QString name = e.attribute("name");
81 QString type = e.attribute("type");
82 QString value = e.text();
83
84 // XXX: Convert the variant pro-actively to the right type?
85 setProperty(name, QVariant(value));
86 }
87}
float value(const T *src, size_t ch)
void clearProperties()
Clear the map of properties.
virtual void setProperty(const QString &name, const QVariant &value)

References KisPropertiesConfiguration::clearProperties(), and d.

◆ fromXML() [1/3]

void KisPropertiesConfiguration::fromXML ( const QDomElement & root)
overridevirtual

Fill the properties configuration object from the XML encoded representation in s. This function use the "Legacy" style XML of the 1.x .kra file format.

Note: the existing properties will not be cleared

Implements KisSerializableConfiguration.

Reimplemented in KisMultiChannelFilterConfiguration, KisMultiChannelFilterConfiguration, KisLevelsFilterConfiguration, KisLevelsFilterConfiguration, KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 70 of file kis_properties_configuration.cc.

71{
72 QDomElement e;
73 for (e = root.firstChildElement("param"); !e.isNull(); e = e.nextSiblingElement("param")) {
74 QString name = e.attribute("name");
75 QString value = e.text();
76
77 // Older versions didn't have a "type" parameter,
78 // so fall back to the old behavior if it's missing.
79 if (!e.hasAttribute("type")) {
80 d->properties[name] = QVariant(value);
81 } else if (e.attribute("type") == "bytearray") {
82 d->properties[name] = QVariant(QByteArray::fromBase64(value.toLatin1()));
83 } else {
84 d->properties[name] = value;
85 }
86 }
87}

◆ fromXML() [2/3]

void KisFilterConfiguration::fromXML ( const QDomElement & )
overridevirtual

Fill the object from the XML encoded representation in s.

Implements KisSerializableConfiguration.

Reimplemented in KisMultiChannelFilterConfiguration, KisMultiChannelFilterConfiguration, KisLevelsFilterConfiguration, KisLevelsFilterConfiguration, KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 89 of file kis_filter_configuration.cc.

90{
91 d->version = elt.attribute("version").toInt();
93}
bool fromXML(const QString &xml, bool clear=true) override

References d, and KisPropertiesConfiguration::fromXML().

◆ fromXML() [3/3]

bool KisPropertiesConfiguration::fromXML ( const QString & xml,
bool clear = true )
overridevirtual

Fill the properties configuration object from the XML encoded representation in s. This function use the "Legacy" style XML of the 1.x .kra file format.

Parameters
xmlthe string that will be parsed as xml
clearif true, the properties map will be emptied.
Returns
true is the xml document could be parsed

Reimplemented from KisSerializableConfiguration.

Reimplemented in KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 62 of file kis_properties_configuration.cc.

56{
57 if (clear) {
59 }
60
61 QDomDocument doc;
62 bool retval = bool(doc.setContent(xml));
63 if (retval) {
64 QDomElement e = doc.documentElement();
65 fromXML(e);
66 }
67 return retval;
68}
void fromXML(const QDomElement &) override

◆ hasLocalResourcesSnapshot()

bool KisFilterConfiguration::hasLocalResourcesSnapshot ( ) const

◆ isCompatible()

bool KisFilterConfiguration::isCompatible ( const KisPaintDeviceSP ) const
virtual

Check if that configuration is compatible with this paint device. The default implementation always return true.

Reimplemented in KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 159 of file kis_filter_configuration.cc.

160{
161 return true;
162}

◆ linkedResources()

QList< KoResourceLoadResult > KisFilterConfiguration::linkedResources ( KisResourcesInterfaceSP globalResourcesInterface) const
virtual
Returns
all the resources that are needed but (*this) filter and are not embedded into it. The resources are fetched from globalResourcesInterface. If fetching of some resources is failed, then (*this) filter is invalid.

Reimplemented in KisGradientMapFilterConfiguration, KisHalftoneFilterConfiguration, KisFilterPalettizeConfiguration, and PatternGeneratorConfiguration.

Definition at line 147 of file kis_filter_configuration.cc.

148{
149 Q_UNUSED(globalResourcesInterface);
150 return {};
151}

◆ name()

const QString & KisFilterConfiguration::name ( ) const

Get the unique, language independent name of the filter.

◆ Private() [1/2]

KisFilterConfiguration::Private ( const Private & rhs)
inline

Definition at line 38 of file kis_filter_configuration.cc.

39 : name(rhs.name),
40 version(rhs.version),
41 channelFlags(rhs.channelFlags),
42 resourcesInterface(rhs.resourcesInterface)
43 {
44 }

◆ Private() [2/2]

KisFilterConfiguration::Private ( const QString & _name,
qint32 _version,
KisResourcesInterfaceSP _resourcesInterface )
inline

Definition at line 31 of file kis_filter_configuration.cc.

32 : name(_name),
33 version(_version),
34 resourcesInterface(_resourcesInterface)
35 {
36 }

◆ requiredResources()

QList< KoResourceLoadResult > KisFilterConfiguration::requiredResources ( KisResourcesInterfaceSP globalResourcesInterface) const

Loads all the required resources either from globalResourcesInterface or from embedded data. The filter first tries to fetch the required resource from the global source, and only if it fails, tries to load it from the embedded data. One can check if the loaded resource is embedded by checking its resourceId().

The set of resources returned is basically: linkedResources() + embeddedResources()

Definition at line 142 of file kis_filter_configuration.cc.

143{
144 return linkedResources(globalResourcesInterface) + embeddedResources(globalResourcesInterface);
145}
virtual QList< KoResourceLoadResult > linkedResources(KisResourcesInterfaceSP globalResourcesInterface) const
virtual QList< KoResourceLoadResult > embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const

References embeddedResources(), and linkedResources().

◆ resourcesInterface()

KisResourcesInterfaceSP KisFilterConfiguration::resourcesInterface ( ) const
Returns
resource interface that is used by KisFilterConfiguration object for loading linked resources

◆ sanityDerefUsageCounter()

int KisFilterConfiguration::sanityDerefUsageCounter ( )
private

◆ sanityRefUsageCounter()

int KisFilterConfiguration::sanityRefUsageCounter ( )
private

◆ setChannelFlags()

void KisFilterConfiguration::setChannelFlags ( QBitArray channelFlags)

Set the channel flags. An empty array is allowed; that means that all channels are to be filtered. Filters can optimize on that. The array must be in the order of the pixel layout.

Definition at line 180 of file kis_filter_configuration.cc.

181{
182 d->channelFlags = channelFlags;
183}

References channelFlags, and d.

◆ setResourcesInterface()

void KisFilterConfiguration::setResourcesInterface ( KisResourcesInterfaceSP resourcesInterface)
virtual

Set resource interface that will be used by KisFilterConfiguration object for loading linked resources

Reimplemented in KisHalftoneFilterConfiguration.

Definition at line 122 of file kis_filter_configuration.cc.

123{
124 d->resourcesInterface = resourcesInterface;
125}

References d, and resourcesInterface.

◆ setVersion()

void KisFilterConfiguration::setVersion ( qint32 version)
protected

Definition at line 112 of file kis_filter_configuration.cc.

113{
114 d->version = version;
115}

References d, and version.

◆ toXML() [1/3]

QString KisPropertiesConfiguration::toXML ( ) const
overridevirtual

Create a serialized version of this properties config This function use the "Legacy" style XML of the 1.x .kra file format.

Reimplemented from KisSerializableConfiguration.

Reimplemented in KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 82 of file kis_properties_configuration.cc.

128{
129 QDomDocument doc = QDomDocument("params");
130 QDomElement root = doc.createElement("params");
131 doc.appendChild(root);
132 toXML(doc, root);
133 return doc.toString();
134}

◆ toXML() [2/3]

void KisPropertiesConfiguration::toXML ( QDomDocument & doc,
QDomElement & root ) const
overridevirtual

Create a serialized version of this properties config This function use the "Legacy" style XML of the 1.x .kra file format.

Implements KisSerializableConfiguration.

Reimplemented in KisMultiChannelFilterConfiguration, KisMultiChannelFilterConfiguration, KisLevelsFilterConfiguration, KisLevelsFilterConfiguration, KisMultiChannelFilterConfiguration, and KisLevelsFilterConfiguration.

Definition at line 76 of file kis_properties_configuration.cc.

90{
91 QMap<QString, QVariant>::ConstIterator it;
92 for (it = d->properties.constBegin(); it != d->properties.constEnd(); ++it) {
93 if (d->notSavedProperties.contains(it.key())) {
94 continue;
95 }
96
97 QDomElement e = doc.createElement("param");
98 e.setAttribute("name", QString(it.key().toLatin1()));
99 QString type = "string";
100 QVariant v = it.value();
101 QDomText text;
102 if (v.type() == QVariant::UserType && v.userType() == qMetaTypeId<KisCubicCurve>()) {
103 text = doc.createCDATASection(v.value<KisCubicCurve>().toString());
104 } else if (v.type() == QVariant::UserType && v.userType() == qMetaTypeId<KoColor>()) {
105 QDomDocument cdataDoc = QDomDocument("color");
106 QDomElement cdataRoot = cdataDoc.createElement("color");
107 cdataDoc.appendChild(cdataRoot);
108 v.value<KoColor>().toXML(cdataDoc, cdataRoot);
109 text = cdataDoc.createCDATASection(cdataDoc.toString());
110 type = "color";
111 } else if(v.type() == QVariant::String ) {
112 text = doc.createCDATASection(v.toString()); // XXX: Unittest this!
113 type = "string";
114 } else if(v.type() == QVariant::ByteArray ) {
115 text = doc.createTextNode(QString::fromLatin1(v.toByteArray().toBase64())); // Arbitrary Data
116 type = "bytearray";
117 } else {
118 text = doc.createTextNode(v.toString());
119 type = "internal";
120 }
121 e.setAttribute("type", type);
122 e.appendChild(text);
123 root.appendChild(e);
124 }
125}
qreal v
QString toString() const

References KisPropertiesConfiguration::d, and value().

◆ toXML() [3/3]

void KisFilterConfiguration::toXML ( QDomDocument & ,
QDomElement &  ) const
overridevirtual

◆ version()

qint32 KisFilterConfiguration::version ( ) const

Get the version of the filter that has created this config

Friends And Related Symbol Documentation

◆ KisNodeFilterInterface

friend class KisNodeFilterInterface
friend

Definition at line 169 of file kis_filter_configuration.h.

Member Data Documentation

◆ channelFlags

QBitArray KisFilterConfiguration::channelFlags

Definition at line 28 of file kis_filter_configuration.cc.

◆ d

Private* const KisFilterConfiguration::d
private

Definition at line 179 of file kis_filter_configuration.h.

◆ name

const QString & KisFilterConfiguration::name

Definition at line 26 of file kis_filter_configuration.cc.

◆ resourcesInterface

KisResourcesInterfaceSP KisFilterConfiguration::resourcesInterface = 0

Definition at line 29 of file kis_filter_configuration.cc.

◆ version

qint32 KisFilterConfiguration::version

Definition at line 27 of file kis_filter_configuration.cc.


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