diff --git a/Paint.cpp b/Paint.cpp index bfaa578..b4af67c 100644 --- a/Paint.cpp +++ b/Paint.cpp @@ -24,6 +24,25 @@ UidAllocator Paint::allocator; +void Texture::read(const QDomElement& obj) +{ + Paint::read(obj); + // Set x and y. + QDomElement e = obj.firstChildElement("x"); + if (!e.isNull()) + setX(e.text().toDouble()); + e = obj.firstChildElement("y"); + if (!e.isNull()) + setY(e.text().toDouble()); +} + +void Texture::write(QDomElement& obj) +{ + Paint::write(obj); + _writeNode(obj, "x", QString::number(getX())); + _writeNode(obj, "y", QString::number(getX())); +} + Paint::Paint(uid id) : Element(id, &allocator) { } diff --git a/Paint.h b/Paint.h index ce6132b..5fd0ed9 100644 --- a/Paint.h +++ b/Paint.h @@ -118,8 +118,8 @@ class Texture : public Paint { Q_OBJECT - Q_PROPERTY(float x READ getX WRITE setX) - Q_PROPERTY(float y READ getY WRITE setY) + Q_PROPERTY(float x READ getX) + Q_PROPERTY(float y READ getY) protected: GLuint textureId; @@ -170,6 +170,13 @@ public: } virtual QRectF getRect() const { return QRectF(getX(), getY(), getWidth(), getHeight()); } + + virtual void read(const QDomElement& obj); + virtual void write(QDomElement& obj); + +protected: + // Lists QProperties that should NOT be parsed automatically. + virtual QList _propertiesSpecial() const { return Paint::_propertiesSpecial() << "x" << "y"; } }; /** diff --git a/Serializable.cpp b/Serializable.cpp index 16d2bb7..325daf9 100644 --- a/Serializable.cpp +++ b/Serializable.cpp @@ -111,12 +111,18 @@ void Serializable::write(QDomElement& obj) // Add to children. else { - QDomElement propertyNode = obj.ownerDocument().createElement(propertyName); - QDomText text = obj.ownerDocument().createTextNode(propertyValue); - propertyNode.appendChild(text); - obj.appendChild(propertyNode); + _writeNode(obj, propertyName, propertyValue); } } } } +void Serializable::_writeNode(QDomElement& obj, const QString& nodeName, const QString& nodeValue) +{ + QDomElement propertyNode = obj.ownerDocument().createElement(nodeName); + QDomText text = obj.ownerDocument().createTextNode(nodeValue); + propertyNode.appendChild(text); + obj.appendChild(propertyNode); +} + + diff --git a/Serializable.h b/Serializable.h index e6f5b49..7cadb59 100644 --- a/Serializable.h +++ b/Serializable.h @@ -45,6 +45,8 @@ protected: // Lists QProperties that should NOT be parsed automatically. virtual QList _propertiesSpecial() const { return QList(); } + + void _writeNode(QDomElement& obj, const QString& nodeName, const QString& nodeValue); }; #endif /* SERIALIZABLE_H_ */