summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2017-08-23 15:01:55 +0100
committerSean Harmer <sean.harmer@kdab.com>2017-08-31 09:30:07 +0000
commitc64f167fbaa1e2613d9533c8ab596120458c85fb (patch)
tree67693a0b36f67b88ceb99dd6d06d773d2e5f068f
parent331f6f7e4b2d13d9a137b10d5a980257f4f054ec (diff)
Introduce QAbstractChannelMapping
This will act as the base class for the various specific use cases: * QChannelMapping for mapping to ordinary QNode properties * QSkeletonMapping for mapping to indexed joints in a skeleton * QCallbackMapping for calling a callback in response to an animation The last two of these are yet to be added. The final one is currently part of QChannelMapping but will be separated from it. All 3 types can map to the same type ChannelMapping backend node. Change-Id: Iaeeba0919628d8da4479b8569d3b10d9b5faccf4 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/animation/frontend/frontend.pri7
-rw-r--r--src/animation/frontend/qabstractchannelmapping.cpp63
-rw-r--r--src/animation/frontend/qabstractchannelmapping.h70
-rw-r--r--src/animation/frontend/qabstractchannelmapping_p.h80
-rw-r--r--src/animation/frontend/qchannelmapping.cpp6
-rw-r--r--src/animation/frontend/qchannelmapping.h4
-rw-r--r--src/animation/frontend/qchannelmapping_p.h4
7 files changed, 225 insertions, 9 deletions
diff --git a/src/animation/frontend/frontend.pri b/src/animation/frontend/frontend.pri
index 35835416b..55208b640 100644
--- a/src/animation/frontend/frontend.pri
+++ b/src/animation/frontend/frontend.pri
@@ -48,7 +48,9 @@ HEADERS += \
$$PWD/qanimationcallback.h \
$$PWD/qanimationcallbacktrigger_p.h \
$$PWD/qclock.h \
- $$PWD/qclock_p.h
+ $$PWD/qclock_p.h \
+ $$PWD/qabstractchannelmapping.h \
+ $$PWD/qabstractchannelmapping_p.h
SOURCES += \
$$PWD/qanimationaspect.cpp \
@@ -77,6 +79,7 @@ SOURCES += \
$$PWD/qkeyframe.cpp \
$$PWD/qanimationclip.cpp \
$$PWD/qanimationcallbacktrigger.cpp \
- $$PWD/qclock.cpp
+ $$PWD/qclock.cpp \
+ $$PWD/qabstractchannelmapping.cpp
INCLUDEPATH += $$PWD
diff --git a/src/animation/frontend/qabstractchannelmapping.cpp b/src/animation/frontend/qabstractchannelmapping.cpp
new file mode 100644
index 000000000..d77efc0c0
--- /dev/null
+++ b/src/animation/frontend/qabstractchannelmapping.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qabstractchannelmapping.h"
+#include "qabstractchannelmapping_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DAnimation {
+
+QAbstractChannelMappingPrivate::QAbstractChannelMappingPrivate()
+ : Qt3DCore::QNodePrivate()
+{
+}
+
+QAbstractChannelMapping::QAbstractChannelMapping(QAbstractChannelMappingPrivate &dd, Qt3DCore::QNode *parent)
+ : Qt3DCore::QNode(dd, parent)
+{
+}
+
+QAbstractChannelMapping::~QAbstractChannelMapping()
+{
+}
+
+} // namespace Qt3DAnimation
+
+QT_END_NAMESPACE
diff --git a/src/animation/frontend/qabstractchannelmapping.h b/src/animation/frontend/qabstractchannelmapping.h
new file mode 100644
index 000000000..564f51191
--- /dev/null
+++ b/src/animation/frontend/qabstractchannelmapping.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QT3DANIMATION_QABSTRACTCHANNELMAPPING_H
+#define QT3DANIMATION_QABSTRACTCHANNELMAPPING_H
+
+#include <Qt3DCore/qnode.h>
+#include <Qt3DAnimation/qt3danimation_global.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DAnimation {
+
+class QAbstractChannelMappingPrivate;
+
+class QT3DANIMATIONSHARED_EXPORT QAbstractChannelMapping : public Qt3DCore::QNode
+{
+ Q_OBJECT
+
+public:
+ ~QAbstractChannelMapping();
+
+protected:
+ QAbstractChannelMapping(QAbstractChannelMappingPrivate &dd, Qt3DCore::QNode *parent = nullptr);
+
+private:
+ Q_DECLARE_PRIVATE(QAbstractChannelMapping)
+};
+
+} // namespace Qt3DAnimation
+
+QT_END_NAMESPACE
+
+#endif // QT3DANIMATION_QABSTRACTCHANNELMAPPING_H
diff --git a/src/animation/frontend/qabstractchannelmapping_p.h b/src/animation/frontend/qabstractchannelmapping_p.h
new file mode 100644
index 000000000..f5d165cdf
--- /dev/null
+++ b/src/animation/frontend/qabstractchannelmapping_p.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QT3DANIMATION_QABSTRACTCHANNELMAPPING_P_H
+#define QT3DANIMATION_QABSTRACTCHANNELMAPPING_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <Qt3DCore/private/qnode_p.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DAnimation {
+
+class QAbstractChannelMappingPrivate : public Qt3DCore::QNodePrivate
+{
+public:
+ QAbstractChannelMappingPrivate();
+
+ Q_DECLARE_PUBLIC(QAbstractChannelMapping)
+
+ // TODO Add member variables
+};
+
+struct QAbstractChannelMappingData
+{
+ // TODO: Add members that should be sent to the backend
+};
+
+} // namespace Qt3DAnimation
+
+
+QT_END_NAMESPACE
+
+#endif // QT3DANIMATION_QABSTRACTCHANNELMAPPING_P_H
diff --git a/src/animation/frontend/qchannelmapping.cpp b/src/animation/frontend/qchannelmapping.cpp
index ec18332c7..b97961edc 100644
--- a/src/animation/frontend/qchannelmapping.cpp
+++ b/src/animation/frontend/qchannelmapping.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
namespace Qt3DAnimation {
QChannelMappingPrivate::QChannelMappingPrivate()
- : Qt3DCore::QNodePrivate()
+ : QAbstractChannelMappingPrivate()
, m_channelName()
, m_target(nullptr)
, m_property()
@@ -119,12 +119,12 @@ void QChannelMappingPrivate::updatePropertyNameAndType()
*/
QChannelMapping::QChannelMapping(Qt3DCore::QNode *parent)
- : Qt3DCore::QNode(*new QChannelMappingPrivate, parent)
+ : QAbstractChannelMapping(*new QChannelMappingPrivate, parent)
{
}
QChannelMapping::QChannelMapping(QChannelMappingPrivate &dd, Qt3DCore::QNode *parent)
- : Qt3DCore::QNode(dd, parent)
+ : QAbstractChannelMapping(dd, parent)
{
}
diff --git a/src/animation/frontend/qchannelmapping.h b/src/animation/frontend/qchannelmapping.h
index d14015b9f..08bda13aa 100644
--- a/src/animation/frontend/qchannelmapping.h
+++ b/src/animation/frontend/qchannelmapping.h
@@ -39,7 +39,7 @@
#include <Qt3DAnimation/qt3danimation_global.h>
#include <Qt3DAnimation/qanimationcallback.h>
-#include <Qt3DCore/qnode.h>
+#include <Qt3DAnimation/qabstractchannelmapping.h>
QT_BEGIN_NAMESPACE
@@ -47,7 +47,7 @@ namespace Qt3DAnimation {
class QChannelMappingPrivate;
-class QT3DANIMATIONSHARED_EXPORT QChannelMapping : public Qt3DCore::QNode
+class QT3DANIMATIONSHARED_EXPORT QChannelMapping : public QAbstractChannelMapping
{
Q_OBJECT
Q_PROPERTY(QString channelName READ channelName WRITE setChannelName NOTIFY channelNameChanged)
diff --git a/src/animation/frontend/qchannelmapping_p.h b/src/animation/frontend/qchannelmapping_p.h
index 95b300888..b9f1f950c 100644
--- a/src/animation/frontend/qchannelmapping_p.h
+++ b/src/animation/frontend/qchannelmapping_p.h
@@ -48,14 +48,14 @@
// We mean it.
//
-#include <Qt3DCore/private/qnode_p.h>
+#include <Qt3DAnimation/private/qabstractchannelmapping_p.h>
#include <Qt3DAnimation/qanimationcallback.h>
QT_BEGIN_NAMESPACE
namespace Qt3DAnimation {
-class QChannelMappingPrivate : public Qt3DCore::QNodePrivate
+class QChannelMappingPrivate : public QAbstractChannelMappingPrivate
{
public:
QChannelMappingPrivate();