aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-17 18:15:07 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-09-23 14:54:47 +0200
commit20a1002fba8c14514f5a40a9c468adb4c84410d3 (patch)
tree69d76e857bd7e81cad49dc2a9c8c9d62499cf55c /src/quick
parent8e222a70d19d5eef616e1d6306415da64fbab4cb (diff)
QQmlValueTypeProvider: Pass arguments as QJSValue
This is so that we can replace them with factory functions as a next step. Change-Id: Ic8619e4e779bd3e47471642c556601555758697b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/util/qquickglobal.cpp61
1 files changed, 36 insertions, 25 deletions
diff --git a/src/quick/util/qquickglobal.cpp b/src/quick/util/qquickglobal.cpp
index 9fe4c6c119..539336a048 100644
--- a/src/quick/util/qquickglobal.cpp
+++ b/src/quick/util/qquickglobal.cpp
@@ -581,55 +581,66 @@ public:
return QMatrix4x4(matVals);
}
- bool create(int type, int argc, const void *argv[], QVariant *v) override
+ bool create(int type, const QJSValue &params, QVariant *v) override
{
switch (type) {
case QMetaType::QFont: // must specify via js-object.
break;
case QMetaType::QVector2D:
- if (argc == 1) {
- const float *xy = reinterpret_cast<const float*>(argv[0]);
- QVector2D v2(xy[0], xy[1]);
- *v = QVariant(v2);
+ if (params.isArray()) {
+ *v = QVariant(QVector2D(params.property(0).toNumber(),
+ params.property(1).toNumber()));
return true;
}
break;
case QMetaType::QVector3D:
- if (argc == 1) {
- const float *xyz = reinterpret_cast<const float*>(argv[0]);
- QVector3D v3(xyz[0], xyz[1], xyz[2]);
- *v = QVariant(v3);
+ if (params.isArray()) {
+ *v = QVariant(QVector3D(params.property(0).toNumber(),
+ params.property(1).toNumber(),
+ params.property(2).toNumber()));
return true;
}
break;
case QMetaType::QVector4D:
- if (argc == 1) {
- const float *xyzw = reinterpret_cast<const float*>(argv[0]);
- QVector4D v4(xyzw[0], xyzw[1], xyzw[2], xyzw[3]);
- *v = QVariant(v4);
+ if (params.isArray()) {
+ *v = QVariant(QVector4D(params.property(0).toNumber(),
+ params.property(1).toNumber(),
+ params.property(2).toNumber(),
+ params.property(3).toNumber()));
return true;
}
break;
case QMetaType::QQuaternion:
- if (argc == 1) {
- const qreal *sxyz = reinterpret_cast<const qreal*>(argv[0]);
- QQuaternion q(sxyz[0], sxyz[1], sxyz[2], sxyz[3]);
- *v = QVariant(q);
+ if (params.isArray()) {
+ *v = QVariant(QQuaternion(params.property(0).toNumber(),
+ params.property(1).toNumber(),
+ params.property(2).toNumber(),
+ params.property(3).toNumber()));
return true;
}
break;
case QMetaType::QMatrix4x4:
- if (argc == 0) {
+ if (params.isNull() || params.isUndefined()) {
QMatrix4x4 m;
*v = QVariant(m);
return true;
- } else if (argc == 1) {
- const qreal *vals = reinterpret_cast<const qreal*>(argv[0]);
- QMatrix4x4 m(vals[0], vals[1], vals[2], vals[3],
- vals[4], vals[5], vals[6], vals[7],
- vals[8], vals[9], vals[10], vals[11],
- vals[12], vals[13], vals[14], vals[15]);
- *v = QVariant(m);
+ } else if (params.isArray()) {
+ *v = QVariant(QMatrix4x4(params.property(0).toNumber(),
+ params.property(1).toNumber(),
+ params.property(2).toNumber(),
+ params.property(3).toNumber(),
+ params.property(4).toNumber(),
+ params.property(5).toNumber(),
+ params.property(6).toNumber(),
+ params.property(7).toNumber(),
+ params.property(8).toNumber(),
+ params.property(9).toNumber(),
+ params.property(10).toNumber(),
+ params.property(11).toNumber(),
+ params.property(12).toNumber(),
+ params.property(13).toNumber(),
+ params.property(14).toNumber(),
+ params.property(15).toNumber()));
return true;
}
break;