summaryrefslogtreecommitdiffstats
path: root/src/input/backend/genericdevicebackendnode_p.h
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kdab.com>2016-01-14 14:25:46 +0200
committerBogDan Vatra <bogdan@kdab.com>2016-01-16 14:15:39 +0000
commit43e55cd54635a5ef1eb09fe9cff701f7eb16cd7a (patch)
tree5b2280d76d6a36bbcb161a4a5fc23c5bdd0aadb4 /src/input/backend/genericdevicebackendnode_p.h
parent8cf683d61c4af3dc2199ea1bede24438b6c042d7 (diff)
Say hello to GenericDevice
GenericDevice can be used to deliver events to Qt3D from any device which is not handled already by Qt3D. What the user need to do is to instantiate a GenericDevice object, set GenericDevice::axesMap and GenericDevice::buttonsMap properties, then use GenericDevice::axisEvent and GenericDevice::buttonEvent signals to deliver the events. [ChangeLog][Input] added GenericDevice Change-Id: Iaef3ff8fabf5002de41d55587ddf1352e6a3e458 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input/backend/genericdevicebackendnode_p.h')
-rw-r--r--src/input/backend/genericdevicebackendnode_p.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/input/backend/genericdevicebackendnode_p.h b/src/input/backend/genericdevicebackendnode_p.h
new file mode 100644
index 000000000..52ac913d2
--- /dev/null
+++ b/src/input/backend/genericdevicebackendnode_p.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://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.LGPLv3 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.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 later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef GENERICDEVICEBACKENDNODE_H
+#define GENERICDEVICEBACKENDNODE_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 <Qt3DInput/qabstractphysicaldevicebackendnode.h>
+#include <QHash>
+#include <QMutex>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DInput {
+
+class QAbstractPhysicalDevice;
+
+namespace Input {
+class InputHandler;
+class GenericDeviceBackendNodeData;
+class GenericDeviceBackendNode : public QAbstractPhysicalDeviceBackendNode
+{
+public:
+ explicit GenericDeviceBackendNode(QBackendNode::Mode mode = QBackendNode::ReadWrite);
+ ~GenericDeviceBackendNode();
+ void updateEvents();
+
+ // QAbstractPhysicalDeviceBackendNode interface
+ void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE;
+ void cleanup() Q_DECL_OVERRIDE;
+ float axisValue(int axisIdentifier) const Q_DECL_OVERRIDE;
+ bool isButtonPressed(int buttonIdentifier) const Q_DECL_OVERRIDE;
+
+private:
+ QHash<int, qreal> m_axesValues;
+ QHash<int, qreal> m_buttonsValues;
+ mutable QSharedPointer<QMutex> m_mutex;
+};
+
+class GenericDeviceBackendFunctor : public Qt3DCore::QBackendNodeFunctor
+{
+public:
+ explicit GenericDeviceBackendFunctor(QInputAspect *inputaspect, InputHandler *handler);
+
+ Qt3DCore::QBackendNode *create(Qt3DCore::QNode *frontend, const Qt3DCore::QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
+ Qt3DCore::QBackendNode *get(const Qt3DCore::QNodeId &id) const Q_DECL_OVERRIDE;
+ void destroy(const Qt3DCore::QNodeId &id) const Q_DECL_OVERRIDE;
+
+private:
+ QInputAspect *m_inputAspect;
+ InputHandler *m_handler;
+};
+
+} // namespace Input
+} // namespace Qt3DInput
+
+QT_END_NAMESPACE
+
+#endif // GENERICDEVICEBACKENDNODE_H