53#if QT_VERSION_MAJOR < 6
57#include "matrix4x4Wrapper.hh"
63QScriptValue toScriptValueMatrix4x4(QScriptEngine *engine,
const Matrix4x4 &s)
65 QScriptValue obj = engine->newObject();
66 for ( uint i = 0 ; i < 4 ; ++i )
67 for ( uint j = 0 ; j < 4 ; ++j )
68 obj.setProperty(QString::number(i) + QString::number(j),QScriptValue(engine, s(i,j)) );
72void fromScriptValueMatrix4x4(
const QScriptValue &obj,
Matrix4x4 &s)
75 for ( uint i = 0 ; i < 4 ; ++i )
76 for ( uint j = 0 ; j < 4 ; ++j )
77 s(i,j) = obj.property(QString::number(i) + QString::number(j)).toNumber();
81 QString _from = obj.toString();
82 if (_from.startsWith (
"Matrix4x4 ("))
84 else if (_from.startsWith (
"Matrix4x4 : ("))
86 if (_from.endsWith (
")"))
87 _from.remove (_from.length () - 1, 1);
89 QStringList sl = _from.split (
',');
94 if (sl.length () == 16)
96 for (
int i = 0; i < 16 && ok; i++)
97 v[i] = sl[i].toFloat (&ok);
100 for (
int i = 0; i < 16; i++)
104 for (
int i = 0; i < 16; i++)
106 std::cerr <<
"String to Matrix4x4 conversion failed!" << std::endl;
111QScriptValue createMatrix4x4(QScriptContext *context, QScriptEngine *engine)
117 if (context->argumentCount() == 16) {
118 for ( uint i = 0 ; i < 4 ; ++i )
119 for ( uint j = 0 ; j < 4 ; ++j )
120 s(i,j) = context->argument(i*4+j).toNumber();
122 for ( uint i = 0 ; i < 4 ; ++i )
123 for ( uint j = 0 ; j < 4 ; ++j )
127 return engine->toScriptValue(s);
130QScriptValue Matrix4x4ToString(QScriptContext *context, QScriptEngine *engine)
132 QString result =
"Matrix4x4 : ( ";
134 for ( uint i = 0 ; i < 4 ; ++i )
135 for ( uint j = 0 ; j < 4 ; ++j ) {
136 if ( i == 3 && j == 3 )
138 result = result + context->thisObject().property(QString::number(i) + QString::number(j)).toString() +
" , ";
141 result = result + context->thisObject().property(
"33").toString() +
" ) ";
143 return QScriptValue(engine, result);