diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-03-27 14:50:23 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-05-09 20:06:54 +0000 |
commit | 32cc1fd5c8ddadcb4ee883bb73fafe7be791834a (patch) | |
tree | 59177326037040a2f24178c0e69ceb736b8675e7 /src/quick3d/quick3drenderer | |
parent | fed49286f866df4fb26c03f5e18b7de1e760be3e (diff) |
Quick3DTechniqueFilter: list of QParameter
Change-Id: I1bfd81bda377c600be290d021dc707dc545904e3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drenderer')
-rw-r--r-- | src/quick3d/quick3drenderer/items/quick3dtechniquefilter.cpp | 42 | ||||
-rw-r--r-- | src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h | 7 |
2 files changed, 45 insertions, 4 deletions
diff --git a/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.cpp b/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.cpp index 9fb91ea90..978a8486f 100644 --- a/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.cpp +++ b/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.cpp @@ -52,10 +52,19 @@ Quick3DTechniqueFilter::Quick3DTechniqueFilter(QObject *parent) QQmlListProperty<Qt3D::QAnnotation> Quick3DTechniqueFilter::requireList() { return QQmlListProperty<Qt3D::QAnnotation>(this, 0, - &Quick3DTechniqueFilter::appendRequire, - &Quick3DTechniqueFilter::requiresCount, - &Quick3DTechniqueFilter::requireAt, - &Quick3DTechniqueFilter::clearRequires); + &Quick3DTechniqueFilter::appendRequire, + &Quick3DTechniqueFilter::requiresCount, + &Quick3DTechniqueFilter::requireAt, + &Quick3DTechniqueFilter::clearRequires); +} + +QQmlListProperty<QParameter> Quick3DTechniqueFilter::parameterList() +{ + return QQmlListProperty<Qt3D::QParameter>(this, 0, + &Quick3DTechniqueFilter::appendParameter, + &Quick3DTechniqueFilter::parametersCount, + &Quick3DTechniqueFilter::parameterAt, + &Quick3DTechniqueFilter::clearParameterList); } void Quick3DTechniqueFilter::appendRequire(QQmlListProperty<QAnnotation> *list, QAnnotation *criterion) @@ -92,6 +101,31 @@ void Quick3DTechniqueFilter::clearRequires(QQmlListProperty<QAnnotation> *list) } } +void Quick3DTechniqueFilter::appendParameter(QQmlListProperty<QParameter> *list, QParameter *param) +{ + Quick3DTechniqueFilter *techniqueFilter = qobject_cast<Quick3DTechniqueFilter *>(list->object); + techniqueFilter->parentTechniqueFilter()->addParameter(param); +} + +QParameter *Quick3DTechniqueFilter::parameterAt(QQmlListProperty<QParameter> *list, int index) +{ + Quick3DTechniqueFilter *techniqueFilter = qobject_cast<Quick3DTechniqueFilter *>(list->object); + return techniqueFilter->parentTechniqueFilter()->parameters().at(index); +} + +int Quick3DTechniqueFilter::parametersCount(QQmlListProperty<QParameter> *list) +{ + Quick3DTechniqueFilter *techniqueFilter = qobject_cast<Quick3DTechniqueFilter *>(list->object); + return techniqueFilter->parentTechniqueFilter()->parameters().count(); +} + +void Quick3DTechniqueFilter::clearParameterList(QQmlListProperty<QParameter> *list) +{ + Quick3DTechniqueFilter *techniqueFilter = qobject_cast<Quick3DTechniqueFilter *>(list->object); + Q_FOREACH (QParameter *p, techniqueFilter->parentTechniqueFilter()->parameters()) + techniqueFilter->parentTechniqueFilter()->removeParameter(p); +} + } // Quick } // Render diff --git a/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h b/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h index cadc83cff..849c4c4f2 100644 --- a/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h +++ b/src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h @@ -55,10 +55,13 @@ class QT3DQUICKRENDERERSHARED_EXPORT Quick3DTechniqueFilter : public QObject { Q_OBJECT Q_PROPERTY(QQmlListProperty<Qt3D::QAnnotation> requires READ requireList) + Q_PROPERTY(QQmlListProperty<Qt3D::QParameter> parameters READ parameterList) public: explicit Quick3DTechniqueFilter(QObject *parent = 0); + QQmlListProperty<Qt3D::QAnnotation> requireList(); + QQmlListProperty<Qt3D::QParameter> parameterList(); inline QTechniqueFilter *parentTechniqueFilter() const { return qobject_cast<Qt3D::QTechniqueFilter*>(parent()); } @@ -68,6 +71,10 @@ private: static int requiresCount(QQmlListProperty<QAnnotation> *list); static void clearRequires(QQmlListProperty<QAnnotation> *list); + static void appendParameter(QQmlListProperty<QParameter> *list, QParameter *param); + static QParameter *parameterAt(QQmlListProperty<QParameter> *list, int index); + static int parametersCount(QQmlListProperty<QParameter> *list); + static void clearParameterList(QQmlListProperty<QParameter> *list); }; } // Quick |