Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMultiChannelFilterConfiguration Class Referenceabstract

#include <kis_multichannel_filter_base.h>

+ Inheritance diagram for KisMultiChannelFilterConfiguration:

Public Member Functions

virtual bool compareTo (const KisPropertiesConfiguration *rhs) const override
 
const QList< KisCubicCurve > & curves () const
 
virtual void fromLegacyXML (const QDomElement &)
 
void fromLegacyXML (const QDomElement &root) override
 
void fromXML (const QDomElement &) override
 
void fromXML (const QDomElement &) override
 
void fromXML (const QDomElement &e) override
 
bool fromXML (const QString &xml, bool clear=true) override
 
bool isCompatible (const KisPaintDeviceSP) const override
 
 KisMultiChannelFilterConfiguration (const KisMultiChannelFilterConfiguration &rhs)
 
 KisMultiChannelFilterConfiguration (int channelCount, const QString &name, qint32 version, KisResourcesInterfaceSP resourcesInterface)
 
void setActiveCurve (int value)
 
void setCurves (QList< KisCubicCurve > &curves)
 
void setProperty (const QString &name, const QVariant &value) override
 
QString toXML () const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
void toXML (QDomDocument &, QDomElement &) const override
 
void toXML (QDomDocument &doc, QDomElement &root) const override
 
const QVector< QVector< quint16 > > & transfers () const
 
 ~KisMultiChannelFilterConfiguration () override
 
- Public Member Functions inherited from KisColorTransformationConfiguration
KisFilterConfigurationSP clone () const override
 
KoColorTransformationcolorTransformation (const KoColorSpace *cs, const KisColorTransformationFilter *filter) const
 
void destroyCache ()
 
void invalidateColorTransformationCache ()
 Manually invalidate the cache. By default setProperty invalidates the cache but this method can be used in subclasses when setProperty is not used to set options. This forces the regeneration of the color transforms.
 
 KisColorTransformationConfiguration (const KisColorTransformationConfiguration &rhs)
 
 KisColorTransformationConfiguration (const QString &name, qint32 version, KisResourcesInterfaceSP resourcesInterface)
 
 Private ()
 
 ~KisColorTransformationConfiguration () override
 
 ~Private ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisFilterConfiguration
QBitArray channelFlags () const
 
KisFilterConfigurationSP cloneWithResourcesSnapshot (KisResourcesInterfaceSP globalResourcesInterface=nullptr) const
 
void createLocalResourcesSnapshot (KisResourcesInterfaceSP globalResourcesInterface=nullptr)
 
virtual QList< KoResourceLoadResultembeddedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
bool hasLocalResourcesSnapshot () 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)
 
qint32 version () const
 
 ~KisFilterConfiguration () override
 
- 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)
 
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 ()
 

Protected Member Functions

bool curveIndexFromCurvePropertyName (const QString &name, int &curveIndex) const
 Takes a curve property name with format "curve#", where # is the index of the channel and puts the index on the "curveIndex" parameter.
 
virtual KisCubicCurve getDefaultCurve ()=0
 
void init ()
 
void updateTransfer (int index)
 
void updateTransfers ()
 
- Protected Member Functions inherited from KisFilterConfiguration
 KisFilterConfiguration (const KisFilterConfiguration &rhs)
 
void setVersion (qint32 version)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Protected Attributes

int m_activeCurve {-1}
 
int m_channelCount {0}
 
QList< KisCubicCurvem_curves
 
QVector< QVector< quint16 > > m_transfers
 

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)
 
- Public Attributes inherited from KisColorTransformationConfiguration
QMap< QThread *, KoColorTransformation * > colorTransformation
 
QMutex mutex
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Public Attributes inherited from KisFilterConfiguration
QBitArray channelFlags
 
QString name
 
KisResourcesInterfaceSP resourcesInterface = 0
 
qint32 version
 
- Public Attributes inherited from KisPropertiesConfiguration
QSet< QString > notSavedProperties
 
QMap< QString, QVariant > properties
 

Detailed Description

Base class for configurations of KisMultiChannelFilter subclasses

Definition at line 46 of file kis_multichannel_filter_base.h.

Constructor & Destructor Documentation

◆ KisMultiChannelFilterConfiguration() [1/2]

KisMultiChannelFilterConfiguration::KisMultiChannelFilterConfiguration ( int channelCount,
const QString & name,
qint32 version,
KisResourcesInterfaceSP resourcesInterface )

◆ KisMultiChannelFilterConfiguration() [2/2]

KisMultiChannelFilterConfiguration::KisMultiChannelFilterConfiguration ( const KisMultiChannelFilterConfiguration & rhs)

◆ ~KisMultiChannelFilterConfiguration()

KisMultiChannelFilterConfiguration::~KisMultiChannelFilterConfiguration ( )
override

Definition at line 84 of file kis_multichannel_filter_base.cpp.

85{}

Member Function Documentation

◆ compareTo()

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

Structural comparison between two instances.

Reimplemented from KisFilterConfiguration.

Reimplemented in KisCrossChannelFilterConfiguration.

Definition at line 305 of file kis_multichannel_filter_base.cpp.

306{
307 const KisMultiChannelFilterConfiguration *otherConfig = dynamic_cast<const KisMultiChannelFilterConfiguration *>(rhs);
308
309 return otherConfig
311 && m_channelCount == otherConfig->m_channelCount
312 && m_curves == otherConfig->m_curves
313 && m_transfers == otherConfig->m_transfers
314 && m_activeCurve == otherConfig->m_activeCurve;
315}
virtual bool compareTo(const KisPropertiesConfiguration *rhs) const override

References KisFilterConfiguration::compareTo(), m_activeCurve, m_channelCount, m_curves, and m_transfers.

◆ curveIndexFromCurvePropertyName()

bool KisMultiChannelFilterConfiguration::curveIndexFromCurvePropertyName ( const QString & name,
int & curveIndex ) const
protected

Takes a curve property name with format "curve#", where # is the index of the channel and puts the index on the "curveIndex" parameter.

Parameters
nameA string with format "curve#"
curveIndexAn int where the decoded channel index is stored
Returns
true if "name" had a valid format
false if "name" had an invalid format

Definition at line 376 of file kis_multichannel_filter_base.cpp.

377{
378 QRegExp rx("curve(\\d+)");
379 if (rx.indexIn(name, 0) == -1) {
380 return false;
381 }
382
383 curveIndex = rx.cap(1).toUShort();
384 return true;
385}

References KisFilterConfiguration::name.

◆ curves()

const QList< KisCubicCurve > & KisMultiChannelFilterConfiguration::curves ( ) const

Definition at line 163 of file kis_multichannel_filter_base.cpp.

164{
165 return m_curves;
166}

References m_curves.

◆ fromLegacyXML() [1/2]

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

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

Reimplemented from KisFilterConfiguration.

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 setProperty(const QString &name, const QVariant &value) override
void clearProperties()
Clear the map of properties.

◆ fromLegacyXML() [2/2]

void KisMultiChannelFilterConfiguration::fromLegacyXML ( const QDomElement & root)
overridevirtual

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

Reimplemented from KisFilterConfiguration.

Definition at line 168 of file kis_multichannel_filter_base.cpp.

169{
170 fromXML(root);
171}
void fromXML(const QDomElement &e) override

References fromXML().

◆ fromXML() [1/4]

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

Reimplemented from KisFilterConfiguration.

Definition at line 74 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/4]

void KisFilterConfiguration::fromXML ( const QDomElement & )
overridevirtual

Fill the object from the XML encoded representation in s.

Reimplemented from KisFilterConfiguration.

Definition at line 77 of file kis_filter_configuration.cc.

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

◆ fromXML() [3/4]

void KisMultiChannelFilterConfiguration::fromXML ( const QDomElement & )
overridevirtual

Fill the object from the XML encoded representation in s.

In Krita 2.9 we stored alpha channel under a separate tag, so we should addend it separately if present

Reimplemented from KisFilterConfiguration.

Definition at line 173 of file kis_multichannel_filter_base.cpp.

174{
176 quint16 numTransfers = 0;
177 quint16 numTransfersWithAlpha = 0;
178 int activeCurve = -1;
179 int version;
180 version = root.attribute("version").toInt();
181
182 QDomElement e = root.firstChild().toElement();
183 QString attributeName;
184 KisCubicCurve curve;
185 quint16 index;
186 QRegExp curveRegexp("curve(\\d+)");
187
188 while (!e.isNull()) {
189 if ((attributeName = e.attribute("name")) == "activeCurve") {
190 activeCurve = e.text().toInt();
191 } else if ((attributeName = e.attribute("name")) == "nTransfers") {
192 numTransfers = e.text().toUShort();
193 } else if ((attributeName = e.attribute("name")) == "nTransfersWithAlpha") {
194 numTransfersWithAlpha = e.text().toUShort();
195 } else {
196 if (curveRegexp.indexIn(attributeName, 0) != -1) {
197
198 index = curveRegexp.cap(1).toUShort();
199 index = qMin(index, quint16(curves.count()));
200
201 if (!e.text().isEmpty()) {
202 curve = KisCubicCurve(e.text());
203 }
204 curves.insert(index, curve);
205 }
206 }
207 e = e.nextSiblingElement();
208 }
209
214 if (numTransfersWithAlpha > numTransfers) {
215 e = root.firstChild().toElement();
216 while (!e.isNull()) {
217 if ((attributeName = e.attribute("name")) == "alphaCurve") {
218 if (!e.text().isEmpty()) {
219 curves.append(KisCubicCurve(e.text()));
220 }
221 }
222 e = e.nextSiblingElement();
223 }
224 }
225
226 //prepend empty curves for the brightness contrast filter.
227 if(getString("legacy") == "brightnesscontrast") {
228 if (getString("colorModel") == LABAColorModelID.id()) {
229 curves.append(KisCubicCurve());
230 curves.append(KisCubicCurve());
231 curves.append(KisCubicCurve());
232 } else {
233 int extraChannels = 5;
234 if (getString("colorModel") == CMYKAColorModelID.id()) {
235 extraChannels = 6;
236 } else if (getString("colorModel") == GrayAColorModelID.id()) {
237 extraChannels = 0;
238 }
239 for(int c = 0; c < extraChannels; c ++) {
240 curves.insert(0, KisCubicCurve());
241 }
242 }
243 }
244 if (!numTransfers)
245 return;
246
249 setActiveCurve(activeCurve);
250}
const KoID GrayAColorModelID("GRAYA", ki18n("Grayscale/Alpha"))
const KoID CMYKAColorModelID("CMYKA", ki18n("CMYK/Alpha"))
const KoID LABAColorModelID("LABA", ki18n("L*a*b*/Alpha"))
void setCurves(QList< KisCubicCurve > &curves)
const QList< KisCubicCurve > & curves() const
QString id() const
Definition KoID.cpp:63
QString getString(const QString &name, const QString &def=QString()) const

References CMYKAColorModelID, curves(), KisPropertiesConfiguration::getString(), GrayAColorModelID, KoID::id(), LABAColorModelID, setActiveCurve(), setCurves(), KisFilterConfiguration::setVersion(), and KisFilterConfiguration::version.

◆ fromXML() [4/4]

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 KisFilterConfiguration.

Definition at line 74 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}

◆ getDefaultCurve()

virtual KisCubicCurve KisMultiChannelFilterConfiguration::getDefaultCurve ( )
protectedpure virtual

◆ init()

void KisMultiChannelFilterConfiguration::init ( )
protected

Definition at line 87 of file kis_multichannel_filter_base.cpp.

88{
89 m_curves.clear();
90
92
93 for (int i = 0; i < m_channelCount; ++i) {
94 m_curves.append(getDefaultCurve());
95
96 const QString name = QLatin1String("curve") + QString::number(i);
97 const QString value = m_curves.last().toString();
99 }
100
102}
virtual KisCubicCurve getDefaultCurve()=0
void setProperty(const QString &name, const QVariant &value) override

References getDefaultCurve(), m_channelCount, m_curves, KisFilterConfiguration::name, KisColorTransformationConfiguration::setProperty(), updateTransfers(), and value().

◆ isCompatible()

bool KisMultiChannelFilterConfiguration::isCompatible ( const KisPaintDeviceSP ) const
overridevirtual

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

Reimplemented from KisFilterConfiguration.

Definition at line 104 of file kis_multichannel_filter_base.cpp.

105{
106 return (int)dev->compositionSourceColorSpace()->channelCount() == m_channelCount;
107}

References KoColorSpace::channelCount(), KisPaintDevice::compositionSourceColorSpace(), and m_channelCount.

◆ setActiveCurve()

void KisMultiChannelFilterConfiguration::setActiveCurve ( int value)

◆ setCurves()

void KisMultiChannelFilterConfiguration::setCurves ( QList< KisCubicCurve > & curves)

Definition at line 109 of file kis_multichannel_filter_base.cpp.

110{
111 // Clean unused properties
112 if (curves.size() < m_curves.size()) {
113 for (int i = curves.size(); i < m_curves.size(); ++i) {
114 const QString name = QLatin1String("curve") + QString::number(i);
116 }
117 }
118
119 m_curves.clear();
121 m_channelCount = curves.size();
123
125
126 // Update properties for python
128
129 for (int i = 0; i < m_curves.size(); ++i) {
130 const QString name = QLatin1String("curve") + QString::number(i);
131 const QString value = m_curves[i].toString();
133 }
134}

References curves(), m_activeCurve, m_channelCount, m_curves, KisFilterConfiguration::name, KisPropertiesConfiguration::removeProperty(), KisColorTransformationConfiguration::setProperty(), updateTransfers(), and value().

◆ setProperty()

void KisMultiChannelFilterConfiguration::setProperty ( const QString & name,
const QVariant & value )
overridevirtual

Invalidate the cache by default when setProperty is called. This forces regenerating the color transforms also when a property of this object changes, not only when the object is copied

Reimplemented from KisColorTransformationConfiguration.

Definition at line 317 of file kis_multichannel_filter_base.cpp.

318{
319 if (name == "nTransfers") {
320 KIS_SAFE_ASSERT_RECOVER_RETURN(value.canConvert<int>());
321
322 const qint32 newChannelCount = value.toInt();
323
324 if (newChannelCount == m_channelCount) {
325 return;
326 }
327
329
330 m_transfers.resize(newChannelCount);
331 if (newChannelCount > m_channelCount) {
332 for (qint32 i = m_channelCount; i < newChannelCount; ++i) {
333 m_curves.append(getDefaultCurve());
335
336 const QString name = QLatin1String("curve") + QString::number(i);
337 const QString value = m_curves.last().toString();
339 }
340 } else {
341 for (qint32 i = newChannelCount; i < m_channelCount; ++i) {
342 m_curves.removeLast();
343
344 const QString name = QLatin1String("curve") + QString::number(i);
346 }
347 }
348
349 m_channelCount = newChannelCount;
351
352
353 return;
354 }
355
356 if (name == "activeCurve") {
357 setActiveCurve(qBound(0, value.toInt(), m_channelCount));
358 }
359
360 int curveIndex;
361 if (!curveIndexFromCurvePropertyName(name, curveIndex) ||
362 curveIndex < 0 || curveIndex >= m_channelCount) {
363 return;
364 }
365
366 KIS_SAFE_ASSERT_RECOVER_RETURN(value.canConvert<QString>());
367
368 m_curves[curveIndex] = KisCubicCurve(value.toString());
369 updateTransfer(curveIndex);
371
372 // Query the curve instead of using the value directly, in case of not valid curve string
374}
bool curveIndexFromCurvePropertyName(const QString &name, int &curveIndex) const
Takes a curve property name with format "curve#", where # is the index of the channel and puts the in...
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
QString toString(const QString &value)
void invalidateColorTransformationCache()
Manually invalidate the cache. By default setProperty invalidates the cache but this method can be us...

References curveIndexFromCurvePropertyName(), getDefaultCurve(), KisColorTransformationConfiguration::invalidateColorTransformationCache(), KIS_SAFE_ASSERT_RECOVER_RETURN, m_channelCount, m_curves, m_transfers, KisFilterConfiguration::name, KisPropertiesConfiguration::removeProperty(), setActiveCurve(), KisColorTransformationConfiguration::setProperty(), updateTransfer(), and value().

◆ toXML() [1/4]

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 KisFilterConfiguration.

Definition at line 75 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/4]

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

Create a serialized version of this object

Reimplemented from KisFilterConfiguration.

Definition at line 78 of file kis_filter_configuration.cc.

96{
97 elt.setAttribute("version", d->version);
99}

◆ toXML() [3/4]

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.

Reimplemented from KisFilterConfiguration.

Definition at line 75 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

◆ toXML() [4/4]

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

Create a serialized version of this object

<params version=1>
<param name="nTransfers">3</param>
<param name="curve0">0,0;0.5,0.5;1,1;</param>
<param name="curve1">0,0;1,1;</param>
<param name="curve2">0,0;1,1;</param>
</params>

Reimplemented from KisFilterConfiguration.

Definition at line 269 of file kis_multichannel_filter_base.cpp.

270{
282 root.setAttribute("version", version());
283
284 QDomText text;
285 QDomElement t;
286
287 addParamNode(doc, root, "nTransfers", QString::number(m_channelCount));
288
289 if (m_activeCurve >= 0) {
290 // save active curve if only it has non-default value
291 addParamNode(doc, root, "activeCurve", QString::number(m_activeCurve));
292 }
293
294 KisCubicCurve curve;
295 QString paramName;
296
297 for (int i = 0; i < m_curves.size(); ++i) {
298 QString name = QLatin1String("curve") + QString::number(i);
299 QString value = m_curves[i].toString();
300
301 addParamNode(doc, root, name, value);
302 }
303}
void addParamNode(QDomDocument &doc, QDomElement &root, const QString &name, const QString &value)

References addParamNode(), m_activeCurve, m_channelCount, m_curves, KisFilterConfiguration::name, value(), and KisFilterConfiguration::version.

◆ transfers()

const QVector< QVector< quint16 > > & KisMultiChannelFilterConfiguration::transfers ( ) const

Definition at line 157 of file kis_multichannel_filter_base.cpp.

158{
159 return m_transfers;
160}

References m_transfers.

◆ updateTransfer()

void KisMultiChannelFilterConfiguration::updateTransfer ( int index)
protected

Definition at line 142 of file kis_multichannel_filter_base.cpp.

143{
144 KIS_SAFE_ASSERT_RECOVER_RETURN(index >= 0 && index < m_curves.size());
145 m_transfers[index] = m_curves[index].uint16Transfer();
146}

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_curves, and m_transfers.

◆ updateTransfers()

void KisMultiChannelFilterConfiguration::updateTransfers ( )
protected

Definition at line 148 of file kis_multichannel_filter_base.cpp.

149{
151 for (int i = 0; i < m_channelCount; i++) {
152 m_transfers[i] = m_curves[i].uint16Transfer();
153 }
154}

References m_channelCount, m_curves, and m_transfers.

Member Data Documentation

◆ m_activeCurve

int KisMultiChannelFilterConfiguration::m_activeCurve {-1}
protected

Definition at line 75 of file kis_multichannel_filter_base.h.

75{-1};

◆ m_channelCount

int KisMultiChannelFilterConfiguration::m_channelCount {0}
protected

Definition at line 74 of file kis_multichannel_filter_base.h.

74{0};

◆ m_curves

QList<KisCubicCurve> KisMultiChannelFilterConfiguration::m_curves
protected

Definition at line 76 of file kis_multichannel_filter_base.h.

◆ m_transfers

QVector<QVector<quint16> > KisMultiChannelFilterConfiguration::m_transfers
protected

Definition at line 77 of file kis_multichannel_filter_base.h.


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