summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/q3dobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/engine/q3dobject.cpp')
-rw-r--r--src/datavisualization/engine/q3dobject.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/datavisualization/engine/q3dobject.cpp b/src/datavisualization/engine/q3dobject.cpp
new file mode 100644
index 00000000..ae13af7d
--- /dev/null
+++ b/src/datavisualization/engine/q3dobject.cpp
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "q3dobject.h"
+#include "q3dobject_p.h"
+#include "q3dscene.h"
+
+QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+
+/*!
+ \class Q3DObject
+ \inmodule QtDataVisualization
+ \brief Simple baseclass for all the objects in the 3D scene.
+ \since 1.0.0
+
+ Q3DObject is a baseclass that contains only position information for an object in 3D scene.
+ The object is considered to be a single point in the coordinate space without dimensions.
+*/
+
+/*!
+ * Constructs a new 3D object with position set to origo by default. An
+ * optional \a parent parameter can be given and is then passed to QObject constructor.
+ */
+Q3DObject::Q3DObject(QObject *parent) :
+ QObject(parent),
+ d_ptr(new Q3DObjectPrivate(this))
+{
+}
+
+/*!
+ * Destroys the 3D object.
+ */
+Q3DObject::~Q3DObject()
+{
+}
+
+/*!
+ * Copies the 3D object position from the given \a source 3D object to this 3D object instance.
+ */
+void Q3DObject::copyValuesFrom(const Q3DObject &source)
+{
+ d_ptr->m_position.setX(source.d_ptr->m_position.x());
+ d_ptr->m_position.setY(source.d_ptr->m_position.y());
+ d_ptr->m_position.setZ(source.d_ptr->m_position.z());
+ setDirty(true);
+}
+
+/*!
+ * \property Q3DObject::parentScene
+ *
+ * This property contains the parent scene as read only value.
+ * If the object has no parent scene the value is 0.
+ */
+Q3DScene *Q3DObject::parentScene()
+{
+ return qobject_cast<Q3DScene *>(parent());
+}
+
+/*!
+ * \property Q3DObject::position
+ *
+ * This property contains the 3D position of the object.
+ */
+QVector3D Q3DObject::position() const
+{
+ return d_ptr->m_position;
+}
+
+void Q3DObject::setPosition(const QVector3D &position)
+{
+ if (d_ptr->m_position != position) {
+ d_ptr->m_position = position;
+ setDirty(true);
+ emit positionChanged(d_ptr->m_position);
+ }
+}
+
+/*!
+ * Sets and clears the \a dirty flag that is used to track
+ * when the 3D object has changed since last update.
+ */
+void Q3DObject::setDirty(bool dirty)
+{
+ d_ptr->m_isDirty = dirty;
+}
+
+/*!
+ * \return flag that indicates if the 3D object has changed.
+ */
+bool Q3DObject::isDirty() const
+{
+ return d_ptr->m_isDirty;
+}
+
+Q3DObjectPrivate::Q3DObjectPrivate(Q3DObject *q) :
+ q_ptr(q),
+ m_isDirty(true)
+{
+}
+
+Q3DObjectPrivate::~Q3DObjectPrivate()
+{
+
+}
+
+QT_DATAVISUALIZATION_END_NAMESPACE