// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #ifndef MAINWIDGET_H #define MAINWIDGET_H #include "geometryengine.h" #include #include #include #include #include #include #include #include class GeometryEngine; class MainWidget : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT public: using QOpenGLWidget::QOpenGLWidget; ~MainWidget(); protected: void mousePressEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; void timerEvent(QTimerEvent *e) override; void initializeGL() override; void resizeGL(int w, int h) override; void paintGL() override; void initShaders(); void initTextures(); private slots: void cleanup(); private: QBasicTimer timer; QOpenGLShaderProgram *program = nullptr; GeometryEngine *geometries = nullptr; QOpenGLTexture *texture = nullptr; QMatrix4x4 projection; QVector2D mousePressPosition; QVector3D rotationAxis; qreal angularSpeed = 0; QQuaternion rotation; }; #endif // MAINWIDGET_H