#include "custom_data_type.h"
QicsDataQPoint::QicsDataQPoint() :
QicsDataItem()
{
}
QicsDataQPoint::QicsDataQPoint(const QPoint &p) :
QicsDataItem()
{
setData(p);
}
QicsDataQPoint::QicsDataQPoint(const QicsDataQPoint &di) :
QicsDataItem()
{
setData(di.data());
}
bool
QicsDataQPoint::setString(const QString &str)
{
int x = (str.right(str.length() - 1)).section(',', 0, 0).toInt();
int y = (str.left(str.length() - 1)).section(',', 1, 1).toInt();
setData(QPoint(x, y));
return true;
}
QString
QicsDataQPoint::format(const char *fmt_string) const
{
QString str;
return str.sprintf(fmt_string, myData.x(), myData.y());
}
int
QicsDataQPoint::compareTo(const QicsDataItem &x) const
{
Q_ASSERT(this->type() == x.type());
const QicsDataQPoint *v = dynamic_cast<const QicsDataQPoint *> (&x);
Q_ASSERT(v != NULL);
if (myData.x() < v->myData.x())
return -1;
else if (myData.x() > v->myData.x())
return 1;
else
{
if (myData.y() < v->myData.y())
return -1;
else if (myData.y() > v->myData.y())
return 1;
else
return 0;
}
}
void
QicsDataQPoint::encode(QDataStream &ds) const
{
ds << typeString(); ds << myData;
}
QicsDataItem *
QicsDataQPoint::fromString(const QString &str)
{
QicsDataQPoint *qp = new QicsDataQPoint();
if (qp->setString(str))
return qp;
else
{
delete qp;
return 0;
}
}
QicsDataItem *
QicsDataQPoint::decode(QDataStream &ds)
{
QPoint val;
ds >> val;
return new QicsDataQPoint(val);
}