qmlfrontend/gameview.h
branchqmlfrontend
changeset 12876 b544bbbd0696
child 12883 adb1fccc706a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qmlfrontend/gameview.h	Tue Jan 02 23:45:18 2018 +0100
@@ -0,0 +1,54 @@
+#ifndef GAMEVIEW_H
+#define GAMEVIEW_H
+
+#include <QQuickItem>
+
+#include <QtGui/QOpenGLFunctions>
+#include <QtGui/QOpenGLShaderProgram>
+
+class GameViewRenderer : public QObject, protected QOpenGLFunctions {
+    Q_OBJECT
+public:
+    GameViewRenderer()
+        : m_delta(0)
+    {
+    }
+    ~GameViewRenderer();
+
+    void tick(quint32 delta) { m_delta = delta; }
+    void setViewportSize(const QSize& size) { m_viewportSize = size; }
+    void setWindow(QQuickWindow* window) { m_window = window; }
+
+public slots:
+    void paint();
+
+private:
+    QSize m_viewportSize;
+    quint32 m_delta;
+    QQuickWindow* m_window;
+};
+
+class GameView : public QQuickItem {
+    Q_OBJECT
+
+public:
+    GameView();
+
+    Q_INVOKABLE void tick(quint32 delta);
+
+signals:
+    void tChanged();
+
+public slots:
+    void sync();
+    void cleanup();
+
+private slots:
+    void handleWindowChanged(QQuickWindow* win);
+
+private:
+    quint32 m_delta;
+    GameViewRenderer* m_renderer;
+};
+
+#endif // GAMEVIEW_H