// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #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: QBasicTimer timer; QOpenGLShaderProgram program; GeometryEngine *geometries = nullptr; QOpenGLTexture *texture = nullptr; QMatrix4x4 projection; QVector2D mousePressPosition; QVector3D rotationAxis; qreal angularSpeed = 0; QQuaternion rotation; }; #endif // MAINWIDGET_H