git-svn-id: svn://db.shs.com.ru/libs@500 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -81,3 +81,39 @@ const PIVariant Q2PIVariant(const QVariant & v) {
|
||||
if (v.canConvert<QAD::IODevice>()) return PIVariant(QAD2PIIODevice(v.value<QAD::IODevice>()));
|
||||
return PIVariant();
|
||||
}
|
||||
|
||||
|
||||
const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevice & v) {
|
||||
PIVariantTypes::IODevice d;
|
||||
d.set(Q2PIPropertyStorage(v.props));
|
||||
d.prefix = Q2PIString(v.prefix);
|
||||
d.mode = v.mode;
|
||||
d.options = v.options;
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
const QAD::IODevice PI2QADIODevice(const PIVariantTypes::IODevice & v) {
|
||||
return QAD::IODevice(PI2QString(v.prefix), PI2QPropertyStorage(v.get()), v.mode, v.options);
|
||||
}
|
||||
|
||||
|
||||
const QAD::File PI2QADFile(const PIVariantTypes::File & v) {
|
||||
return QAD::File(PI2QString(v.file), PI2QString(v.filter), v.is_abs);
|
||||
}
|
||||
|
||||
|
||||
const QAD::Dir PI2QADDir(const PIVariantTypes::Dir & v) {
|
||||
return QAD::Dir(PI2QString(v.dir), v.is_abs);
|
||||
}
|
||||
|
||||
|
||||
const PIVariantTypes::File QAD2PIFile(const QAD::File & v) {
|
||||
return PIVariantTypes::File(Q2PIString(v.file), Q2PIString(v.filter), v.is_abs);
|
||||
}
|
||||
|
||||
|
||||
const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) {
|
||||
return PIVariantTypes::Dir(Q2PIString(v.dir), v.is_abs);
|
||||
}
|
||||
|
||||
|
||||
53
piqt/piqt.h
53
piqt/piqt.h
@@ -1,7 +1,7 @@
|
||||
#ifndef PIQT_H
|
||||
#define PIQT_H
|
||||
|
||||
#include "pimathvector.h"
|
||||
#include "pimathmatrix.h"
|
||||
#include "pipropertystorage.h"
|
||||
#include "qad_types.h"
|
||||
#include <QVector3D>
|
||||
@@ -41,6 +41,35 @@ inline const PIPointd Q2PIPoint(const QPointF & v) {return PIPointd(v.x(), v.y()
|
||||
inline const QRectF PI2QRect(const PIRectd & v) {return QRectF(v.x0, v.y0, v.width(), v.height());}
|
||||
inline const PIRectd Q2PIRect(const QRectF & v) {return PIRectd(v.x(), v.y(), v.width(), v.height());}
|
||||
|
||||
inline const QAD::MathVector PI2QMathVector(const PIMathVectord & v) {
|
||||
QVector<double> q = QVector<double>(v.size());
|
||||
memcpy(q.data(), v.data(), q.size()*sizeof(double));
|
||||
return QAD::MathVector(q);
|
||||
}
|
||||
inline const PIMathVectord Q2PIMathVector(const QAD::MathVector & v) {
|
||||
PIMathVectord p = PIMathVectord(v.v.size());
|
||||
memcpy(p.data(), v.v.data(), p.size()*sizeof(double));
|
||||
return p;
|
||||
}
|
||||
|
||||
inline const QAD::MathMatrix PI2QMathMatrix(const PIMathMatrixd & v) {
|
||||
PIVector<PIVector<double> > p = v.toVectors();
|
||||
QVector<QVector<double> > q = QVector<QVector<double> >(p.size());
|
||||
for (int i = 0; i < q.size(); ++i) {
|
||||
q[i].resize(p[i].size());
|
||||
memcpy(q[i].data(), p[i].data(), q[i].size()*sizeof(double));
|
||||
}
|
||||
return QAD::MathMatrix(q);
|
||||
}
|
||||
inline const PIMathMatrixd Q2PIMathMatrix(const QAD::MathMatrix & v) {
|
||||
PIVector<PIVector<double> > p = PIVector<PIVector<double> >(v.m.size());
|
||||
for (int i = 0; i < v.m.size(); ++i) {
|
||||
p[i].resize(v.m[i].size());
|
||||
memcpy(p[i].data(), v.m[i].data(), p[i].size()*sizeof(double));
|
||||
}
|
||||
return PIMathMatrixd(p);
|
||||
}
|
||||
|
||||
|
||||
inline const QDate PI2QDate(const PIDate & v) {return QDate(v.year, v.month, v.day);}
|
||||
inline const QTime PI2QTime(const PITime & v) {return QTime(v.hours, v.minutes, v.seconds, v.milliseconds);}
|
||||
@@ -54,6 +83,7 @@ inline const PIDateTime Q2PIDateTime(const QDateTime & v) {return PIDateTime(Q2P
|
||||
inline const QColor PI2QColor(const PIVariantTypes::Color & v) {return QColor::fromRgba(v.rgba);}
|
||||
inline const PIVariantTypes::Color Q2PIColor(const QColor & v) {return PIVariantTypes::Color(v.rgba());}
|
||||
|
||||
|
||||
inline PIPropertyStorage Q2PIPropertyStorage(const PropertyStorage & props) {
|
||||
PIPropertyStorage ret;
|
||||
foreach (const PropertyStorage::Property & p, props)
|
||||
@@ -70,22 +100,13 @@ inline PropertyStorage PI2QPropertyStorage(const PIPropertyStorage & props) {
|
||||
|
||||
|
||||
const QAD::Enum PI2QADEnum(const PIVariantTypes::Enum & el);
|
||||
inline const QAD::File PI2QADFile(const PIVariantTypes::File & v) {return QAD::File(PI2QString(v.file), PI2QString(v.filter), v.is_abs);}
|
||||
inline const QAD::Dir PI2QADDir(const PIVariantTypes::Dir & v) {return QAD::Dir(PI2QString(v.dir), v.is_abs);}
|
||||
inline const QAD::IODevice PI2QADIODevice(const PIVariantTypes::IODevice & v) {
|
||||
return QAD::IODevice(PI2QString(v.prefix), PI2QPropertyStorage(v.get()), v.mode, v.options);
|
||||
}
|
||||
const QAD::File PI2QADFile(const PIVariantTypes::File & v);
|
||||
const QAD::Dir PI2QADDir(const PIVariantTypes::Dir & v);
|
||||
const QAD::IODevice PI2QADIODevice(const PIVariantTypes::IODevice & v);
|
||||
const PIVariantTypes::Enum QAD2PIEnum(const QAD::Enum & el);
|
||||
inline const PIVariantTypes::File QAD2PIFile(const QAD::File & v) {return PIVariantTypes::File(Q2PIString(v.file), Q2PIString(v.filter), v.is_abs);}
|
||||
inline const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) {return PIVariantTypes::Dir(Q2PIString(v.dir), v.is_abs);}
|
||||
inline const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevice & v) {
|
||||
PIVariantTypes::IODevice d;
|
||||
d.set(Q2PIPropertyStorage(v.props));
|
||||
d.prefix = Q2PIString(v.prefix);
|
||||
d.mode = v.mode;
|
||||
d.options = v.options;
|
||||
return d;
|
||||
}
|
||||
const PIVariantTypes::File QAD2PIFile(const QAD::File & v);
|
||||
const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v);
|
||||
const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevice & v);
|
||||
|
||||
//inline const PIVariant QString2PIVariant(const QString & v) {return PIVariant::readFromString(QString2PIString(v));}
|
||||
|
||||
|
||||
@@ -39,6 +39,12 @@ __QADTypesRegistrator__::__QADTypesRegistrator__() {
|
||||
qRegisterMetaType<QAD::IODevice>("QAD::IODevice");
|
||||
qRegisterMetaTypeStreamOperators<QAD::IODevice>("QAD::IODevice");
|
||||
|
||||
qRegisterMetaType<QAD::MathVector>("QAD::MathVector");
|
||||
qRegisterMetaTypeStreamOperators<QAD::MathVector>("QAD::MathVector");
|
||||
|
||||
qRegisterMetaType<QAD::MathMatrix>("QAD::MathMatrix");
|
||||
qRegisterMetaTypeStreamOperators<QAD::MathMatrix>("QAD::MathMatrix");
|
||||
|
||||
#if QT_VERSION >= 0x050200
|
||||
QMetaType::registerConverter<QAD::Enum, int>(&QAD::Enum::selectedValue);
|
||||
QMetaType::registerConverter<QAD::Enum, QString>(&QAD::Enum::selectedName);
|
||||
@@ -185,6 +191,8 @@ QVariant::Type typeFromLetter(const QString & l) {
|
||||
if (ft == "F") return (QVariant::Type)qMetaTypeId<QAD::File>();
|
||||
if (ft == "D") return (QVariant::Type)qMetaTypeId<QAD::Dir>();
|
||||
if (ft == "d") return (QVariant::Type)qMetaTypeId<QAD::IODevice>();
|
||||
if (ft == "V") return (QVariant::Type)qMetaTypeId<QAD::MathVector>();
|
||||
if (ft == "M") return (QVariant::Type)qMetaTypeId<QAD::MathMatrix>();
|
||||
return QVariant::String;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,16 @@ namespace QAD {
|
||||
PropertyStorage props;
|
||||
};
|
||||
|
||||
struct MathVector {
|
||||
MathVector(const QVector<double> & vec = QVector<double>()) {v = vec;}
|
||||
QVector<double> v;
|
||||
};
|
||||
|
||||
struct MathMatrix {
|
||||
MathMatrix(const QVector<QVector<double> > & mat = QVector<QVector<double> > ()) {m = mat;}
|
||||
QVector<QVector<double> > m; // [Row][Column]
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(QAD::Enumerator)
|
||||
@@ -86,6 +96,16 @@ inline QDataStream & operator <<(QDataStream & s, const QAD::IODevice & v) {s <<
|
||||
inline QDataStream & operator >>(QDataStream & s, QAD::IODevice & v) {s >> v.prefix >> v.mode >> v.options >> v.props; return s;}
|
||||
inline QDebug operator <<(QDebug s, const QAD::IODevice & v) {s.nospace() << v.toString(); return s.space();}
|
||||
|
||||
Q_DECLARE_METATYPE(QAD::MathVector)
|
||||
inline QDataStream & operator <<(QDataStream & s, const QAD::MathVector & v) {s << v.v; return s;}
|
||||
inline QDataStream & operator >>(QDataStream & s, QAD::MathVector & v) {s >> v.v; return s;}
|
||||
inline QDebug operator <<(QDebug s, const QAD::MathVector & v) {s.nospace() << "Vector " << v.v; return s.space();}
|
||||
|
||||
Q_DECLARE_METATYPE(QAD::MathMatrix)
|
||||
inline QDataStream & operator <<(QDataStream & s, const QAD::MathMatrix & v) {s << v.m; return s;}
|
||||
inline QDataStream & operator >>(QDataStream & s, QAD::MathMatrix & v) {s >> v.m; return s;}
|
||||
inline QDebug operator <<(QDebug s, const QAD::MathMatrix & v) {s.nospace() << "Matrix " << v.m; return s.space();}
|
||||
|
||||
|
||||
class __QADTypesRegistrator__ {
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user