Skip to content
Snippets Groups Projects

GUI: serialization refactoring part 7

Merged Mikhail Svechnikov requested to merge serialization_7 into main
1 file
+ 97
8
Compare changes
  • Side-by-side
  • Inline
@@ -38,6 +38,11 @@ const QString IsClosed("IsClosed");
@@ -38,6 +38,11 @@ const QString IsClosed("IsClosed");
const QString PolygonPoint("PolygonPoint");
const QString PolygonPoint("PolygonPoint");
const QString XPosition("XPosition");
const QString XPosition("XPosition");
const QString YPosition("YPosition");
const QString YPosition("YPosition");
 
const QString XCenter("XCenter");
 
const QString YCenter("YCenter");
 
const QString XRadius("XRadius");
 
const QString YRadius("YRadius");
 
const QString Angle("Angle");
} // namespace Tag
} // namespace Tag
} // namespace
} // namespace
@@ -791,24 +796,108 @@ void EllipseItem::setAngle(const double val)
@@ -791,24 +796,108 @@ void EllipseItem::setAngle(const double val)
void EllipseItem::serialize(Streamer& s)
void EllipseItem::serialize(Streamer& s)
{
{
s.assertVersion(0);
// s.assertVersion(0);
Serialize::rwSessionItem<bool>(s, "maskValue", getItem(P_MASK_VALUE));
// Serialize::rwSessionItem<bool>(s, "maskValue", getItem(P_MASK_VALUE));
Serialize::rwSessionItem<bool>(s, "visible", getItem(P_IS_VISIBLE));
// Serialize::rwSessionItem<bool>(s, "visible", getItem(P_IS_VISIBLE));
Serialize::rwSessionItem<double>(s, "x", getItem(P_XCENTER));
Serialize::rwSessionItem<double>(s, "y", getItem(P_YCENTER));
// Serialize::rwSessionItem<double>(s, "x", getItem(P_XCENTER));
Serialize::rwSessionItem<double>(s, "xr", getItem(P_XRADIUS));
// Serialize::rwSessionItem<double>(s, "y", getItem(P_YCENTER));
Serialize::rwSessionItem<double>(s, "yr", getItem(P_YRADIUS));
// Serialize::rwSessionItem<double>(s, "xr", getItem(P_XRADIUS));
Serialize::rwSessionItem<double>(s, "angle", getItem(P_ANGLE));
// Serialize::rwSessionItem<double>(s, "yr", getItem(P_YRADIUS));
 
// Serialize::rwSessionItem<double>(s, "angle", getItem(P_ANGLE));
 
 
if (s.xmlReader())
 
readFrom(s.xmlReader());
 
else if (s.xmlWriter())
 
writeTo(s.xmlWriter());
}
}
void EllipseItem::writeTo(QXmlStreamWriter *w) const
void EllipseItem::writeTo(QXmlStreamWriter *w) const
{
{
 
XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
 
// parameters from base class
 
w->writeStartElement(Tag::BaseData);
 
MaskItem::writeTo(w);
 
w->writeEndElement();
 
 
// x center
 
w->writeStartElement(Tag::XCenter);
 
XML::writeAttribute(w, XML::Attrib::value, xCenter());
 
w->writeEndElement();
 
 
// y center
 
w->writeStartElement(Tag::YCenter);
 
XML::writeAttribute(w, XML::Attrib::value, yCenter());
 
w->writeEndElement();
 
 
// x radius
 
w->writeStartElement(Tag::XRadius);
 
XML::writeAttribute(w, XML::Attrib::value, xRadius());
 
w->writeEndElement();
 
 
// y radius
 
w->writeStartElement(Tag::YRadius);
 
XML::writeAttribute(w, XML::Attrib::value, yRadius());
 
w->writeEndElement();
 
// rotation angle
 
w->writeStartElement(Tag::Angle);
 
XML::writeAttribute(w, XML::Attrib::value, angle());
 
w->writeEndElement();
}
}
void EllipseItem::readFrom(QXmlStreamReader *r)
void EllipseItem::readFrom(QXmlStreamReader *r)
{
{
 
const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
 
Q_UNUSED(version)
 
 
while (r->readNextStartElement()) {
 
QString tag = r->name().toString();
 
// parameters from base class
 
if (tag == Tag::BaseData) {
 
MaskItem::readFrom(r);
 
XML::gotoEndElementOfTag(r, tag);
 
 
// x center
 
} else if (tag == Tag::XCenter) {
 
double xCenter = 0;
 
XML::readAttribute(r, XML::Attrib::value, &xCenter);
 
setXCenter(xCenter);
 
XML::gotoEndElementOfTag(r, tag);
 
 
// y center
 
} else if (tag == Tag::YCenter) {
 
double yCenter = 0;
 
XML::readAttribute(r, XML::Attrib::value, &yCenter);
 
setYCenter(yCenter);
 
XML::gotoEndElementOfTag(r, tag);
 
 
// x radius
 
} else if (tag == Tag::XRadius) {
 
double xRadius = 0;
 
XML::readAttribute(r, XML::Attrib::value, &xRadius);
 
setXRadius(xRadius);
 
XML::gotoEndElementOfTag(r, tag);
 
 
// y radius
 
} else if (tag == Tag::YRadius) {
 
double yRadius = 0;
 
XML::readAttribute(r, XML::Attrib::value, &yRadius);
 
setYRadius(yRadius);
 
XML::gotoEndElementOfTag(r, tag);
 
 
// rotation angle
 
} else if (tag == Tag::Angle) {
 
double angle = 0;
 
XML::readAttribute(r, XML::Attrib::value, &angle);
 
setAngle(angle);
 
XML::gotoEndElementOfTag(r, tag);
 
 
} else
 
r->skipCurrentElement();
 
}
}
}
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
Loading