diff options
Diffstat (limited to 'tests/manual/examples/opengl/hellowindow/hellowindow.h')
-rw-r--r-- | tests/manual/examples/opengl/hellowindow/hellowindow.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/manual/examples/opengl/hellowindow/hellowindow.h b/tests/manual/examples/opengl/hellowindow/hellowindow.h new file mode 100644 index 0000000000..1e117ab2e0 --- /dev/null +++ b/tests/manual/examples/opengl/hellowindow/hellowindow.h @@ -0,0 +1,77 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef HELLOWINDOW_H +#define HELLOWINDOW_H + +#include <QWindow> + +#include <QColor> +#include <QMutex> +#include <QOpenGLShaderProgram> +#include <QOpenGLBuffer> +#include <QSharedPointer> +#include <QTimer> + +class HelloWindow; + +class Renderer : public QObject +{ + Q_OBJECT + +public: + explicit Renderer(const QSurfaceFormat &format, Renderer *share = nullptr, + QScreen *screen = nullptr); + + QSurfaceFormat format() const { return m_format; } + +public slots: + void render(HelloWindow *surface, qreal angle, const QColor &color); + +signals: + void requestUpdate(); + +private: + void initialize(); + + void createGeometry(); + void createBubbles(int number); + void quad(qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4); + void extrude(qreal x1, qreal y1, qreal x2, qreal y2); + + QList<QVector3D> vertices; + QList<QVector3D> normals; + int vertexAttr; + int normalAttr; + int matrixUniform; + int colorUniform; + + bool m_initialized; + QSurfaceFormat m_format; + QOpenGLContext *m_context; + QOpenGLShaderProgram *m_program; + QOpenGLBuffer m_vbo; + QColor m_backgroundColor; +}; + +class HelloWindow : public QWindow +{ +public: + explicit HelloWindow(const QSharedPointer<Renderer> &renderer, QScreen *screen = nullptr); + + QColor color() const; + void updateColor(); + +protected: + bool event(QEvent *ev) override; + void exposeEvent(QExposeEvent *event) override; + void mousePressEvent(QMouseEvent *) override; + void render(); + +private: + int m_colorIndex; + QColor m_color; + const QSharedPointer<Renderer> m_renderer; +}; + +#endif // HELLOWINDOW_H |