diff --git a/src/private/qt_types_p.cpp b/src/private/qt_types_p.cpp index 5545dcf..67b6a0d 100644 --- a/src/private/qt_types_p.cpp +++ b/src/private/qt_types_p.cpp @@ -132,3 +132,28 @@ QVariant MsgPackPrivate::unpack_qdatetime(const QByteArray &data) QTime t = unpack_qtime_raw(p + 3); return QDateTime(d, t); } + +// Points and Vectors +quint32 MsgPackPrivate::pack_qpoint(const QVariant &variant, QByteArray &data, bool write) +{ + QPoint pt = variant.toPoint(); + quint8 *p = 0; + if (write) { + p = (quint8 *)data.data(); + p = MsgPackPrivate::pack_int(pt.x(), p, false); + p = MsgPackPrivate::pack_int(pt.y(), p, false); + return data.size(); // ok since it already resized + } else { + p = MsgPackPrivate::pack_int(pt.x(), p, false); + p = MsgPackPrivate::pack_int(pt.y(), p, false); + return p - (quint8 *)0; + } +} + +QVariant MsgPackPrivate::unpack_qpoint(const QByteArray &data) +{ + quint8 *p = (quint8 *)data.data(); + QVariant v; + p = (MsgPackPrivate::unpackers[*p - 0xc0])(v, p); + +} \ No newline at end of file diff --git a/src/private/qt_types_p.h b/src/private/qt_types_p.h index b3d50c1..725a3b6 100644 --- a/src/private/qt_types_p.h +++ b/src/private/qt_types_p.h @@ -27,6 +27,10 @@ QVariant unpack_qdate(const QByteArray &data); quint32 pack_qdatetime(const QVariant &variant, QByteArray &data, bool write); QVariant unpack_qdatetime(const QByteArray &data); +// Points and Vectors +quint32 pack_qpoint(const QVariant &variant, QByteArray &data, bool write); +QVariant unpack_qpoint(const QByteArray &data); + } // MsgPackPrivate