summaryrefslogtreecommitdiffstats
path: root/src/datavisualizationqml2/abstractdeclarative.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualizationqml2/abstractdeclarative.cpp')
-rw-r--r--src/datavisualizationqml2/abstractdeclarative.cpp51
1 files changed, 42 insertions, 9 deletions
diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp
index 70ba8df8..fa69cac9 100644
--- a/src/datavisualizationqml2/abstractdeclarative.cpp
+++ b/src/datavisualizationqml2/abstractdeclarative.cpp
@@ -211,19 +211,19 @@ bool AbstractDeclarative::shadowsSupported() const
return m_controller->shadowsSupported();
}
-int AbstractDeclarative::addCustomItem(const QString &meshFile, const QVector3D &position,
- const QVector3D &scaling, const QQuaternion &rotation,
- const QString &textureFile)
+int AbstractDeclarative::addCustomItem(QCustom3DItem *item)
{
- QImage textureImage;
- if (!textureFile.isNull())
- textureImage = QImage(textureFile);
- return m_controller->addCustomItem(meshFile, position, scaling, rotation, textureImage);
+ return m_controller->addCustomItem(item);
}
-void AbstractDeclarative::removeCustomItemAt(int index)
+void AbstractDeclarative::removeCustomItems()
{
- m_controller->deleteCustomItem(index);
+ m_controller->deleteCustomItems();
+}
+
+void AbstractDeclarative::removeCustomItem(QCustom3DItem *item)
+{
+ m_controller->deleteCustomItem(item);
}
void AbstractDeclarative::removeCustomItemAt(const QVector3D &position)
@@ -231,6 +231,39 @@ void AbstractDeclarative::removeCustomItemAt(const QVector3D &position)
m_controller->deleteCustomItem(position);
}
+QQmlListProperty<QCustom3DItem> AbstractDeclarative::customItemList()
+{
+ return QQmlListProperty<QCustom3DItem>(this, this,
+ &AbstractDeclarative::appendCustomItemFunc,
+ &AbstractDeclarative::countCustomItemFunc,
+ &AbstractDeclarative::atCustomItemFunc,
+ &AbstractDeclarative::clearCustomItemFunc);
+}
+
+void AbstractDeclarative::appendCustomItemFunc(QQmlListProperty<QCustom3DItem> *list,
+ QCustom3DItem *item)
+{
+ AbstractDeclarative *decl = reinterpret_cast<AbstractDeclarative *>(list->data);
+ decl->addCustomItem(item);
+}
+
+int AbstractDeclarative::countCustomItemFunc(QQmlListProperty<QCustom3DItem> *list)
+{
+ return reinterpret_cast<AbstractDeclarative *>(list->data)->m_controller->m_customItems.size();
+}
+
+QCustom3DItem *AbstractDeclarative::atCustomItemFunc(QQmlListProperty<QCustom3DItem> *list,
+ int index)
+{
+ return reinterpret_cast<AbstractDeclarative *>(list->data)->m_controller->m_customItems.at(index);
+}
+
+void AbstractDeclarative::clearCustomItemFunc(QQmlListProperty<QCustom3DItem> *list)
+{
+ AbstractDeclarative *decl = reinterpret_cast<AbstractDeclarative *>(list->data);
+ decl->removeCustomItems();
+}
+
void AbstractDeclarative::setSharedController(Abstract3DController *controller)
{
Q_ASSERT(controller);