8#include <private/qv4engine_p.h>
9#include <private/qv4functionobject_p.h>
10#include <QtCore/private/qnumeric_p.h>
271 if (!
r || !
r->d()->datum)
274 r->d()->datum->lifeSpan = 0;
283 if (!
r || !
r->d()->datum)
294 if (!
r || !
r->d()->datum)
299#define COLOR_GETTER_AND_SETTER(VAR, NAME) static QV4::ReturnedValue particleData_get_ ## NAME (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) \
301 QV4::Scope scope(b); \
302 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
303 if (!r || !r->d()->datum) \
304 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object"))); \
306 RETURN_RESULT(QV4::Encode((r->d()->datum->color. VAR )/255.0));\
309static QV4::ReturnedValue particleData_set_ ## NAME (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *argv, int argc)\
311 QV4::Scope scope(b); \
312 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
313 if (!r || !r->d()->datum)\
314 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object")));\
316 double d = argc ? argv[0].toNumber() : 0; \
317 r->d()->datum->color. VAR = qMin(255, qMax(0, (int)::floor(d * 255.0)));\
318 RETURN_UNDEFINED(); \
322#define SEMIBOOL_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) \
324 QV4::Scope scope(b); \
325 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
326 if (!r || !r->d()->datum) \
327 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object"))); \
329 RETURN_RESULT(QV4::Encode(r->d()->datum-> VARIABLE));\
332static QV4::ReturnedValue particleData_set_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *argv, int argc)\
334 QV4::Scope scope(b); \
335 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
336 if (!r || !r->d()->datum)\
337 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object")));\
339 r->d()->datum-> VARIABLE = (argc && argv[0].toBoolean()) ? 1.0 : 0.0;\
340 RETURN_UNDEFINED(); \
343#define FLOAT_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) \
345 QV4::Scope scope(b); \
346 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
347 if (!r || !r->d()->datum) \
348 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object"))); \
350 RETURN_RESULT(QV4::Encode(r->d()->datum-> VARIABLE));\
353static QV4::ReturnedValue particleData_set_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *argv, int argc)\
355 QV4::Scope scope(b); \
356 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
357 if (!r || !r->d()->datum)\
358 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object")));\
360 r->d()->datum-> VARIABLE = argc ? argv[0].toNumber() : qt_qnan();\
361 RETURN_UNDEFINED(); \
364#define FAKE_FLOAT_GETTER_AND_SETTER(VARIABLE, GETTER, SETTER) static QV4::ReturnedValue particleData_get_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int) \
366 QV4::Scope scope(b); \
367 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
368 if (!r || !r->d()->datum) \
369 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object"))); \
371 RETURN_RESULT(QV4::Encode(r->d()->datum-> GETTER (r->d()->particleSystem)));\
374static QV4::ReturnedValue particleData_set_ ## VARIABLE (const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *argv, int argc)\
376 QV4::Scope scope(b); \
377 QV4::Scoped<QV4ParticleData> r(scope, *thisObject); \
378 if (!r || !r->d()->datum)\
379 RETURN_RESULT(scope.engine->throwError(QStringLiteral("Not a valid ParticleData object")));\
381 r->d()->datum-> SETTER (argc ? argv[0].toNumber() : qt_qnan(), r->d()->particleSystem);\
382 RETURN_UNDEFINED(); \
385#define REGISTER_ACCESSOR(PROTO, ENGINE, VARIABLE, NAME) \
386 PROTO ->defineAccessorProperty( QStringLiteral( #NAME ), particleData_get_ ## VARIABLE , particleData_set_ ## VARIABLE )
485 o->setPrototypeUnchecked(
p);
495 return m_v4Value.
value();
QV4::ReturnedValue v4Value() const
QQuickV4ParticleData(QV4::ExecutionEngine *, QQuickParticleData *, QQuickParticleSystem *system)
~QV4ParticleDataDeletable() override
QV4::PersistentValue proto
ObjectType::Data * allocate(Args &&... args)
ReturnedValue value() const
Combined button and popup list for selecting options.
\qmltype Particle \inqmlmodule QtQuick.Particles
GLboolean GLboolean GLboolean b
GLint GLint GLint GLint GLint x
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLfloat GLfloat GLfloat alpha
#define FLOAT_GETTER_AND_SETTER(VARIABLE)
static QV4::ReturnedValue particleData_curSize(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int)
#define FAKE_FLOAT_GETTER_AND_SETTER(VARIABLE, GETTER, SETTER)
#define REGISTER_ACCESSOR(PROTO, ENGINE, VARIABLE, NAME)
#define SEMIBOOL_GETTER_AND_SETTER(VARIABLE)
static QV4::ReturnedValue particleData_discard(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int)
static QV4::ReturnedValue particleData_lifeLeft(const QV4::FunctionObject *b, const QV4::Value *thisObject, const QV4::Value *, int)
#define COLOR_GETTER_AND_SETTER(VAR, NAME)
#define QStringLiteral(str)
#define V4_DEFINE_EXTENSION(dataclass, datafunction)
#define DEFINE_OBJECT_VTABLE(classname)
#define V4_OBJECT2(DataClass, superClass)
static constexpr ReturnedValue undefined()
MemoryManager * memoryManager
ReturnedValue throwError(const Value &value)
QQuickParticleData * datum
void init(QQuickParticleData *datum, QQuickParticleSystem *particleSystem)
QQuickParticleSystem * particleSystem