summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-15 10:40:25 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-17 17:20:36 +0000
commit451fb9873a37e15d43e34cc714ddfc5bb917ea2e (patch)
treec3eb5e153b31f89db1d7e4011f37fd39d4812421 /src
parentc335dfa350e1f5fbbd5481a278fc0f09915c8690 (diff)
Add QRendererSettings frontend class
Now sure if we should fold QFrameGraph into this too so as to have one place to configure the renderer. Of course we can easily aggregate both a QRendererSettings and FrameGraph components into an entity. Change-Id: Id17c185de908eedbcc53afe726a14f0c6f91ffca Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/render/frontend/qrenderersettings.cpp108
-rw-r--r--src/render/frontend/qrenderersettings.h95
-rw-r--r--src/render/frontend/qrenderersettings_p.h71
-rw-r--r--src/render/frontend/render-frontend.pri7
4 files changed, 279 insertions, 2 deletions
diff --git a/src/render/frontend/qrenderersettings.cpp b/src/render/frontend/qrenderersettings.cpp
new file mode 100644
index 000000000..63cccc582
--- /dev/null
+++ b/src/render/frontend/qrenderersettings.cpp
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#include "qrenderersettings.h"
+#include "qrenderersettings_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+
+QRendererSettingsPrivate::QRendererSettingsPrivate()
+ : Qt3DCore::QComponentPrivate()
+ , m_pickMethod(QRendererSettings::BoundingVolumePicking)
+ , m_pickResultMode(QRendererSettings::NearestPick)
+{
+}
+
+QRendererSettings::QRendererSettings(Qt3DCore::QNode *parent)
+ : Qt3DCore::QComponent(*new QRendererSettingsPrivate, parent)
+{
+}
+
+QRendererSettings::QRendererSettings(QRendererSettingsPrivate &dd, Qt3DCore::QNode *parent)
+ : Qt3DCore::QComponent(dd, parent)
+{
+}
+
+QRendererSettings::~QRendererSettings()
+{
+ QNode::cleanup();
+}
+
+QRendererSettings::PickMethod QRendererSettings::pickMethod() const
+{
+ Q_D(const QRendererSettings);
+ return d->m_pickMethod;
+}
+
+QRendererSettings::PickResultMode QRendererSettings::pickResultMode() const
+{
+ Q_D(const QRendererSettings);
+ return d->m_pickResultMode;
+}
+
+void QRendererSettings::setPickMethod(QRendererSettings::PickMethod pickMethod)
+{
+ Q_D(QRendererSettings);
+ if (d->m_pickMethod == pickMethod)
+ return;
+
+ d->m_pickMethod = pickMethod;
+ emit pickMethodChanged(pickMethod);
+}
+
+void QRendererSettings::setPickResultMode(QRendererSettings::PickResultMode pickResultMode)
+{
+ Q_D(QRendererSettings);
+ if (d->m_pickResultMode == pickResultMode)
+ return;
+
+ d->m_pickResultMode = pickResultMode;
+ emit pickResultModeChanged(pickResultMode);
+}
+
+void QRendererSettings::copy(const QNode *ref)
+{
+ QComponent::copy(ref);
+ const QRendererSettings *object = static_cast<const QRendererSettings *>(ref);
+ d_func()->m_pickMethod = object->d_func()->m_pickMethod;
+ d_func()->m_pickResultMode = object->d_func()->m_pickResultMode;
+}
+
+} // namespace Qt3Drender
+
+QT_END_NAMESPACE
diff --git a/src/render/frontend/qrenderersettings.h b/src/render/frontend/qrenderersettings.h
new file mode 100644
index 000000000..b3355f1f1
--- /dev/null
+++ b/src/render/frontend/qrenderersettings.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** 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 QT3DRENDER_QRENDERERSETTINGS_H
+#define QT3DRENDER_QRENDERERSETTINGS_H
+
+#include <Qt3DCore/qcomponent.h>
+#include <Qt3DRender/qt3drender_global.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+
+class QRendererSettingsPrivate;
+
+class QT3DRENDERSHARED_EXPORT QRendererSettings : public Qt3DCore::QComponent
+{
+ Q_OBJECT
+ Q_PROPERTY(PickMethod pickMethod READ pickMethod WRITE setPickMethod NOTIFY pickMethodChanged)
+ Q_PROPERTY(PickResultMode pickResultMode READ pickResultMode WRITE setPickResultMode NOTIFY pickResultModeChanged)
+
+public:
+ explicit QRendererSettings(Qt3DCore::QNode *parent = 0);
+ ~QRendererSettings();
+
+ enum PickMethod {
+ BoundingVolumePicking,
+ TrianglePicking
+ };
+ Q_ENUM(PickMethod)
+
+ enum PickResultMode {
+ NearestPick,
+ AllPicks
+ };
+ Q_ENUM(PickResultMode)
+
+ PickMethod pickMethod() const;
+ PickResultMode pickResultMode() const;
+
+public Q_SLOTS:
+ void setPickMethod(PickMethod pickMethod);
+ void setPickResultMode(PickResultMode pickResultMode);
+
+Q_SIGNALS:
+ void pickMethodChanged(PickMethod pickMethod);
+ void pickResultModeChanged(PickResultMode pickResult);
+
+protected:
+ Q_DECLARE_PRIVATE(QRendererSettings)
+ QRendererSettings(QRendererSettingsPrivate &dd, Qt3DCore::QNode *parent = 0);
+ void copy(const Qt3DCore::QNode *ref) Q_DECL_OVERRIDE;
+
+private:
+ QT3D_CLONEABLE(QRendererSettings)
+};
+
+} // namespace Qt3Drender
+
+QT_END_NAMESPACE
+
+#endif // QT3DRENDER_QRENDERERSETTINGS_H
diff --git a/src/render/frontend/qrenderersettings_p.h b/src/render/frontend/qrenderersettings_p.h
new file mode 100644
index 000000000..fbf6d3e5f
--- /dev/null
+++ b/src/render/frontend/qrenderersettings_p.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** 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 QT3DRENDER_QRENDERERSETTINGS_P_H
+#define QT3DRENDER_QRENDERERSETTINGS_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/qcomponent_p.h>
+#include <Qt3DRender/qrenderersettings.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+
+class QRendererSettingsPrivate : public Qt3DCore::QComponentPrivate
+{
+public:
+ QRendererSettingsPrivate();
+
+ QRendererSettings::PickMethod m_pickMethod;
+ QRendererSettings::PickResultMode m_pickResultMode;
+};
+
+} // namespace Qt3Drender
+
+QT_END_NAMESPACE
+
+#endif // QT3DRENDER_QRENDERERSETTINGS_P_H
diff --git a/src/render/frontend/render-frontend.pri b/src/render/frontend/render-frontend.pri
index 01bf3e3f2..e4894a883 100644
--- a/src/render/frontend/render-frontend.pri
+++ b/src/render/frontend/render-frontend.pri
@@ -18,7 +18,9 @@ HEADERS += \
$$PWD/qcamera_p.h \
$$PWD/qcamera.h \
$$PWD/qcameralens.h \
- $$PWD/qcameralens_p.h
+ $$PWD/qcameralens_p.h \
+ $$PWD/qrenderersettings.h \
+ $$PWD/qrenderersettings_p.h
SOURCES += \
$$PWD/qabstractfunctor.cpp \
@@ -31,4 +33,5 @@ SOURCES += \
$$PWD/qboundingvolumedebug.cpp \
$$PWD/qcomputejob.cpp \
$$PWD/qcamera.cpp \
- $$PWD/qcameralens.cpp
+ $$PWD/qcameralens.cpp \
+ $$PWD/qrenderersettings.cpp