| 2 #include <QOpenGLWidget> |
2 #include <QOpenGLWidget> |
| 3 #include <QOpenGLFunctions> |
3 #include <QOpenGLFunctions> |
| 4 #include <QQuaternion> |
4 #include <QQuaternion> |
| 5 #include "main.h" |
5 #include "main.h" |
| 6 #include "gl/common.h" |
6 #include "gl/common.h" |
| |
7 #include "gl/compiler.h" |
| 7 |
8 |
| 8 class PartRenderer : public QOpenGLWidget, protected QOpenGLFunctions |
9 class PartRenderer : public QOpenGLWidget, protected QOpenGLFunctions |
| 9 { |
10 { |
| |
11 Q_OBJECT |
| 10 public: |
12 public: |
| 11 PartRenderer(QWidget* parent = nullptr); |
13 PartRenderer(Model* model, DocumentManager* documents, QWidget* parent = nullptr); |
| 12 protected: |
14 protected: |
| 13 void initializeGL() override; |
15 void initializeGL() override; |
| 14 void resizeGL(int width, int height) override; |
16 void resizeGL(int width, int height) override; |
| 15 void paintGL() override; |
17 void paintGL() override; |
| 16 void mouseMoveEvent(QMouseEvent* event) override; |
18 void mouseMoveEvent(QMouseEvent* event) override; |
| |
19 void setCompiler(gl::Compiler* compiler); |
| 17 private slots: |
20 private slots: |
| 18 void setRenderStyle(const gl::RenderStyle newStyle); |
21 void setRenderStyle(const gl::RenderStyle newStyle); |
| 19 private: |
22 private: |
| |
23 Model* const model; |
| |
24 DocumentManager* const documents; |
| 20 QPointF lastMousePosition; |
25 QPointF lastMousePosition; |
| 21 bool initialized = false; |
26 bool initialized = false; |
| 22 gl::RenderStyle renderStyle = gl::RenderStyle::Normal; |
27 gl::RenderStyle renderStyle = gl::RenderStyle::Normal; |
| 23 QQuaternion rotation; |
28 QQuaternion rotation; |
| 24 void initializeLighting(); |
29 void initializeLighting(); |
| |
30 gl::Compiler* compiler; |
| 25 }; |
31 }; |