summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-15 09:04:27 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-17 17:20:26 +0000
commit16681543b9463bb0059c999f80a4659591f5ebbb (patch)
tree9d0d4ac4bc823ee08e0b4ef18ec26da42cc7f5c4 /src
parent2381516c20bb20432ed0a4227e7af3ed5240d975 (diff)
Add QRenderSurfaceSelector
Change-Id: I65fbfed5bcf244668021878c0cfddb75d530e56e Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/render/framegraph/framegraph.pri7
-rw-r--r--src/render/framegraph/qrendersurfaceselector.cpp93
-rw-r--r--src/render/framegraph/qrendersurfaceselector.h80
-rw-r--r--src/render/framegraph/qrendersurfaceselector_p.h70
4 files changed, 248 insertions, 2 deletions
diff --git a/src/render/framegraph/framegraph.pri b/src/render/framegraph/framegraph.pri
index 422825629..899d36305 100644
--- a/src/render/framegraph/framegraph.pri
+++ b/src/render/framegraph/framegraph.pri
@@ -48,7 +48,9 @@ HEADERS += \
$$PWD/qlighting_p.h \
$$PWD/lighting_p.h \
$$PWD/qdispatchcompute.h \
- $$PWD/dispatchcompute_p.h
+ $$PWD/dispatchcompute_p.h \
+ $$PWD/qrendersurfaceselector.h \
+ $$PWD/qrendersurfaceselector_p.h
SOURCES += \
$$PWD/cameraselectornode.cpp \
@@ -84,4 +86,5 @@ SOURCES += \
$$PWD/qlighting.cpp \
$$PWD/lighting.cpp \
$$PWD/qdispatchcompute.cpp \
- $$PWD/dispatchcompute.cpp
+ $$PWD/dispatchcompute.cpp \
+ $$PWD/qrendersurfaceselector.cpp
diff --git a/src/render/framegraph/qrendersurfaceselector.cpp b/src/render/framegraph/qrendersurfaceselector.cpp
new file mode 100644
index 000000000..8ff55d152
--- /dev/null
+++ b/src/render/framegraph/qrendersurfaceselector.cpp
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** 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 "qrendersurfaceselector.h"
+#include "qrendersurfaceselector_p.h"
+
+#include <QtGui/qwindow.h>
+#include <QtGui/qoffscreensurface.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+
+QRenderSurfaceSelectorPrivate::QRenderSurfaceSelectorPrivate()
+ : Qt3DRender::QFrameGraphNodePrivate()
+{
+}
+
+QRenderSurfaceSelector::QRenderSurfaceSelector(Qt3DCore::QNode *parent)
+ : Qt3DRender::QFrameGraphNode(*new QRenderSurfaceSelectorPrivate, parent)
+{
+}
+
+QRenderSurfaceSelector::QRenderSurfaceSelector(QRenderSurfaceSelectorPrivate &dd, Qt3DCore::QNode *parent)
+ : Qt3DRender::QFrameGraphNode(dd, parent)
+{
+}
+
+QRenderSurfaceSelector::~QRenderSurfaceSelector()
+{
+ QNode::cleanup();
+}
+
+QSurface *QRenderSurfaceSelector::surface() const
+{
+ Q_D(const QRenderSurfaceSelector);
+ return d->m_surface;
+}
+
+void QRenderSurfaceSelector::setSurface(QSurface *surface)
+{
+ Q_D(QRenderSurfaceSelector);
+ if (d->m_surface == surface)
+ return;
+
+ d->m_surface = surface;
+ emit surfaceChanged(surface);
+}
+
+void QRenderSurfaceSelector::copy(const QNode *ref)
+{
+ QFrameGraphNode::copy(ref);
+ const QRenderSurfaceSelector *object = static_cast<const QRenderSurfaceSelector *>(ref);
+
+ d_func()->m_surface = object->d_func()->m_surface;
+}
+
+} // namespace Qt3DRender
+
+QT_END_NAMESPACE
diff --git a/src/render/framegraph/qrendersurfaceselector.h b/src/render/framegraph/qrendersurfaceselector.h
new file mode 100644
index 000000000..1492356b3
--- /dev/null
+++ b/src/render/framegraph/qrendersurfaceselector.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** 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_QRENDERSURFACESELECTOR_H
+#define QT3DRENDER_QRENDERSURFACESELECTOR_H
+
+#include <Qt3DRender/qframegraphnode.h>
+#include <Qt3DRender/qt3drender_global.h>
+
+QT_BEGIN_NAMESPACE
+
+class QSurface;
+
+namespace Qt3DRender {
+
+class QRenderSurfaceSelectorPrivate;
+
+class QT3DRENDERSHARED_EXPORT QRenderSurfaceSelector : public Qt3DRender::QFrameGraphNode
+{
+ Q_OBJECT
+ Q_PROPERTY(QSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged)
+public:
+ explicit QRenderSurfaceSelector(Qt3DCore::QNode *parent = 0);
+ ~QRenderSurfaceSelector();
+
+ QSurface *surface() const;
+
+public Q_SLOTS:
+ void setSurface(QSurface *surface);
+
+Q_SIGNALS:
+ void surfaceChanged(QSurface* surface);
+
+protected:
+ Q_DECLARE_PRIVATE(QRenderSurfaceSelector)
+ QRenderSurfaceSelector(QRenderSurfaceSelectorPrivate &dd, Qt3DCore::QNode *parent = 0);
+ void copy(const Qt3DCore::QNode *ref) Q_DECL_OVERRIDE;
+
+private:
+ QT3D_CLONEABLE(QRenderSurfaceSelector)
+};
+
+} // namespace Qt3DRender
+
+QT_END_NAMESPACE
+
+#endif // QT3DRENDER_QRENDERSURFACESELECTOR_H
diff --git a/src/render/framegraph/qrendersurfaceselector_p.h b/src/render/framegraph/qrendersurfaceselector_p.h
new file mode 100644
index 000000000..a3ee04037
--- /dev/null
+++ b/src/render/framegraph/qrendersurfaceselector_p.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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 QRENDERSURFACESELECTOR_P_H
+#define QRENDERSURFACESELECTOR_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 <Qt3DRender/private/qframegraphnode_p.h>
+#include <QtGui/qsurface.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+
+class QRenderSurfaceSelectorPrivate : public Qt3DRender::QFrameGraphNodePrivate
+{
+public:
+ QRenderSurfaceSelectorPrivate();
+
+ QSurface *m_surface;
+};
+
+} // namespace Qt3DRender
+
+QT_END_NAMESPACE
+
+#endif // QRENDERSURFACESELECTOR_P_H