From fed49286f866df4fb26c03f5e18b7de1e760be3e Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Fri, 27 Mar 2015 14:49:45 +0100 Subject: Quick3DRenderPassFilter: list of QParameter Change-Id: I3169dd594b1e81e1a202d16f647b019bb5886af9 Reviewed-by: Sean Harmer --- .../items/quick3drenderpassfilter.cpp | 43 ++++++++++++++++++++-- .../items/quick3drenderpassfilter.h | 8 ++++ 2 files changed, 47 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.cpp b/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.cpp index 85e849fa9..3b31f696b 100644 --- a/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.cpp +++ b/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.cpp @@ -52,10 +52,20 @@ Quick3DRenderPassFilter::Quick3DRenderPassFilter(QObject *parent) QQmlListProperty Quick3DRenderPassFilter::includeList() { return QQmlListProperty(this, 0, - &Quick3DRenderPassFilter::appendInclude, - &Quick3DRenderPassFilter::includesCount, - &Quick3DRenderPassFilter::includeAt, - &Quick3DRenderPassFilter::clearIncludes); + &Quick3DRenderPassFilter::appendInclude, + &Quick3DRenderPassFilter::includesCount, + &Quick3DRenderPassFilter::includeAt, + &Quick3DRenderPassFilter::clearIncludes); +} + +QQmlListProperty Quick3DRenderPassFilter::parameterList() +{ + return QQmlListProperty(this, 0, + &Quick3DRenderPassFilter::appendParameter, + &Quick3DRenderPassFilter::parametersCount, + &Quick3DRenderPassFilter::parameterAt, + &Quick3DRenderPassFilter::clearParameterList); + } void Quick3DRenderPassFilter::appendInclude(QQmlListProperty *list, QAnnotation *annotation) @@ -92,6 +102,31 @@ void Quick3DRenderPassFilter::clearIncludes(QQmlListProperty *list) } } +void Quick3DRenderPassFilter::appendParameter(QQmlListProperty *list, QParameter *param) +{ + Quick3DRenderPassFilter *rPassFilter = qobject_cast(list->object); + rPassFilter->parentRenderPassFilter()->addParameter(param); +} + +QParameter *Quick3DRenderPassFilter::parameterAt(QQmlListProperty *list, int index) +{ + Quick3DRenderPassFilter *rPassFilter = qobject_cast(list->object); + return rPassFilter->parentRenderPassFilter()->parameters().at(index); +} + +int Quick3DRenderPassFilter::parametersCount(QQmlListProperty *list) +{ + Quick3DRenderPassFilter *rPassFilter = qobject_cast(list->object); + return rPassFilter->parentRenderPassFilter()->parameters().count(); +} + +void Quick3DRenderPassFilter::clearParameterList(QQmlListProperty *list) +{ + Quick3DRenderPassFilter *rPassFilter = qobject_cast(list->object); + Q_FOREACH (QParameter *p, rPassFilter->parentRenderPassFilter()->parameters()) + rPassFilter->parentRenderPassFilter()->removeParameter(p); +} + } // Quick } // Render diff --git a/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.h b/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.h index ae0c32bc8..4b22568ad 100644 --- a/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.h +++ b/src/quick3d/quick3drenderer/items/quick3drenderpassfilter.h @@ -54,10 +54,13 @@ class QT3DQUICKRENDERERSHARED_EXPORT Quick3DRenderPassFilter : public QObject { Q_OBJECT Q_PROPERTY(QQmlListProperty includes READ includeList) + Q_PROPERTY(QQmlListProperty parameters READ parameterList) + public: explicit Quick3DRenderPassFilter(QObject *parent = 0); QQmlListProperty includeList(); + QQmlListProperty parameterList(); inline QRenderPassFilter *parentRenderPassFilter() const { return qobject_cast(parent()); } @@ -66,6 +69,11 @@ private: static QAnnotation *includeAt(QQmlListProperty *list, int index); static int includesCount(QQmlListProperty *list); static void clearIncludes(QQmlListProperty *list); + + static void appendParameter(QQmlListProperty *list, QParameter *param); + static QParameter *parameterAt(QQmlListProperty *list, int index); + static int parametersCount(QQmlListProperty *list); + static void clearParameterList(QQmlListProperty *list); }; } // Quick -- cgit v1.2.3