summaryrefslogtreecommitdiffstats
path: root/tests/manual/examples/opengl/paintedwindow/paintedwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/examples/opengl/paintedwindow/paintedwindow.h')
-rw-r--r--tests/manual/examples/opengl/paintedwindow/paintedwindow.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/manual/examples/opengl/paintedwindow/paintedwindow.h b/tests/manual/examples/opengl/paintedwindow/paintedwindow.h
new file mode 100644
index 0000000000..11a76a3056
--- /dev/null
+++ b/tests/manual/examples/opengl/paintedwindow/paintedwindow.h
@@ -0,0 +1,62 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef PAINTEDWINDOW_H
+#define PAINTEDWINDOW_H
+
+#include <QWindow>
+
+#include <QtGui/qopengl.h>
+#include <QtOpenGL/qopenglshaderprogram.h>
+#include <QtOpenGL/qopenglframebufferobject.h>
+
+#include <QPropertyAnimation>
+
+#include <QColor>
+#include <QImage>
+#include <QTime>
+
+QT_BEGIN_NAMESPACE
+class QOpenGLContext;
+QT_END_NAMESPACE
+
+class PaintedWindow : public QWindow
+{
+ Q_OBJECT
+ Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
+
+public:
+ PaintedWindow();
+
+ qreal rotation() const { return m_rotation; }
+
+signals:
+ void rotationChanged(qreal rotation);
+
+private slots:
+ void paint();
+ void setRotation(qreal r);
+ void orientationChanged(Qt::ScreenOrientation newOrientation);
+ void rotationDone();
+
+private:
+ void exposeEvent(QExposeEvent *) override;
+ void mousePressEvent(QMouseEvent *) override;
+
+ void paint(QPainter *painter, const QRect &rect);
+
+ QOpenGLContext *m_context;
+ qreal m_rotation;
+
+ QImage m_prevImage;
+ QImage m_nextImage;
+ qreal m_deltaRotation;
+
+ Qt::ScreenOrientation m_targetOrientation;
+ Qt::ScreenOrientation m_nextTargetOrientation;
+
+ QPropertyAnimation *m_animation;
+ QTimer *m_paintTimer;
+};
+
+#endif // PAINTEDWINDOW_H