summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-03-27 14:49:45 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-05-09 20:06:50 +0000
commitfed49286f866df4fb26c03f5e18b7de1e760be3e (patch)
tree3a7b83b9ea87e044fde18da4b74db17886ba4952 /src
parentb3566c035298feb506a83ef0dda81c6135c784a1 (diff)
Quick3DRenderPassFilter: list of QParameter
Change-Id: I3169dd594b1e81e1a202d16f647b019bb5886af9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick3d/quick3drenderer/items/quick3drenderpassfilter.cpp43
-rw-r--r--src/quick3d/quick3drenderer/items/quick3drenderpassfilter.h8
2 files changed, 47 insertions, 4 deletions
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<QAnnotation> Quick3DRenderPassFilter::includeList()
{
return QQmlListProperty<Qt3D::QAnnotation>(this, 0,
- &Quick3DRenderPassFilter::appendInclude,
- &Quick3DRenderPassFilter::includesCount,
- &Quick3DRenderPassFilter::includeAt,
- &Quick3DRenderPassFilter::clearIncludes);
+ &Quick3DRenderPassFilter::appendInclude,
+ &Quick3DRenderPassFilter::includesCount,
+ &Quick3DRenderPassFilter::includeAt,
+ &Quick3DRenderPassFilter::clearIncludes);
+}
+
+QQmlListProperty<QParameter> Quick3DRenderPassFilter::parameterList()
+{
+ return QQmlListProperty<Qt3D::QParameter>(this, 0,
+ &Quick3DRenderPassFilter::appendParameter,
+ &Quick3DRenderPassFilter::parametersCount,
+ &Quick3DRenderPassFilter::parameterAt,
+ &Quick3DRenderPassFilter::clearParameterList);
+
}
void Quick3DRenderPassFilter::appendInclude(QQmlListProperty<QAnnotation> *list, QAnnotation *annotation)
@@ -92,6 +102,31 @@ void Quick3DRenderPassFilter::clearIncludes(QQmlListProperty<QAnnotation> *list)
}
}
+void Quick3DRenderPassFilter::appendParameter(QQmlListProperty<QParameter> *list, QParameter *param)
+{
+ Quick3DRenderPassFilter *rPassFilter = qobject_cast<Quick3DRenderPassFilter *>(list->object);
+ rPassFilter->parentRenderPassFilter()->addParameter(param);
+}
+
+QParameter *Quick3DRenderPassFilter::parameterAt(QQmlListProperty<QParameter> *list, int index)
+{
+ Quick3DRenderPassFilter *rPassFilter = qobject_cast<Quick3DRenderPassFilter *>(list->object);
+ return rPassFilter->parentRenderPassFilter()->parameters().at(index);
+}
+
+int Quick3DRenderPassFilter::parametersCount(QQmlListProperty<QParameter> *list)
+{
+ Quick3DRenderPassFilter *rPassFilter = qobject_cast<Quick3DRenderPassFilter *>(list->object);
+ return rPassFilter->parentRenderPassFilter()->parameters().count();
+}
+
+void Quick3DRenderPassFilter::clearParameterList(QQmlListProperty<QParameter> *list)
+{
+ Quick3DRenderPassFilter *rPassFilter = qobject_cast<Quick3DRenderPassFilter *>(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<Qt3D::QAnnotation> includes READ includeList)
+ Q_PROPERTY(QQmlListProperty<Qt3D::QParameter> parameters READ parameterList)
+
public:
explicit Quick3DRenderPassFilter(QObject *parent = 0);
QQmlListProperty<Qt3D::QAnnotation> includeList();
+ QQmlListProperty<Qt3D::QParameter> parameterList();
inline QRenderPassFilter *parentRenderPassFilter() const { return qobject_cast<Qt3D::QRenderPassFilter*>(parent()); }
@@ -66,6 +69,11 @@ private:
static QAnnotation *includeAt(QQmlListProperty<QAnnotation> *list, int index);
static int includesCount(QQmlListProperty<QAnnotation> *list);
static void clearIncludes(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