Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ #ifndef GLWIDGET_H
++ #define GLWIDGET_H
++
++ #include <QOpenGLWidget>
++ #include <QOpenGLFunctions>
++ #include <QOpenGLVertexArrayObject>
++ #include <QOpenGLBuffer>
++ #include <QMatrix4x4>
++ #include "logo.h"
++
++ QT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram)
++
++ class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions
++ {
++ Q_OBJECT
++
++ public:
++ GLWidget(QWidget *parent = nullptr);
++ ~GLWidget();
++
++ static bool isTransparent() { return m_transparent; }
++ static void setTransparent(bool t) { m_transparent = t; }
++
++ QSize minimumSizeHint() const override;
++ QSize sizeHint() const override;
++
++ public slots:
++ void setXRotation(int angle);
++ void setYRotation(int angle);
++ void setZRotation(int angle);
++ void cleanup();
++
++ signals:
++ void xRotationChanged(int angle);
++ void yRotationChanged(int angle);
++ void zRotationChanged(int angle);
++
++ protected:
++ void initializeGL() override;
++ void paintGL() override;
++ void resizeGL(int width, int height) override;
++ void mousePressEvent(QMouseEvent *event) override;
++ void mouseMoveEvent(QMouseEvent *event) override;
++
++ private:
++ void setupVertexAttribs();
++
++ bool m_core;
++ int m_xRot = 0;
++ int m_yRot = 0;
++ int m_zRot = 0;
++ QPoint m_lastPos;
++ Logo m_logo;
++ QOpenGLVertexArrayObject m_vao;
++ QOpenGLBuffer m_logoVbo;
++ QOpenGLShaderProgram *m_program = nullptr;
++ int m_projMatrixLoc = 0;
++ int m_mvMatrixLoc = 0;
++ int m_normalMatrixLoc = 0;
++ int m_lightPosLoc = 0;
++ QMatrix4x4 m_proj;
++ QMatrix4x4 m_camera;
++ QMatrix4x4 m_world;
++ static bool m_transparent;
++ };
++
++ #endif