summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drenderer
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-03-27 14:50:23 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-05-09 20:06:54 +0000
commit32cc1fd5c8ddadcb4ee883bb73fafe7be791834a (patch)
tree59177326037040a2f24178c0e69ceb736b8675e7 /src/quick3d/quick3drenderer
parentfed49286f866df4fb26c03f5e18b7de1e760be3e (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.cpp42
-rw-r--r--src/quick3d/quick3drenderer/items/quick3dtechniquefilter.h7
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