21 DocumentManager* documents, |
20 DocumentManager* documents, |
22 const ldraw::ColorTable& colorTable, |
21 const ldraw::ColorTable& colorTable, |
23 QWidget* parent = nullptr); |
22 QWidget* parent = nullptr); |
24 ~PartRenderer() override; |
23 ~PartRenderer() override; |
25 void setRenderPreferences(const gl::RenderPreferences& newPreferences); |
24 void setRenderPreferences(const gl::RenderPreferences& newPreferences); |
26 static glm::vec3 viewport(const glm::vec3& point, float width, float height); |
|
27 static glm::vec3 antiviewport(const glm::vec3& point, float width, float height); |
|
28 protected: |
25 protected: |
29 ldraw::Id pick(const QPoint& where); |
26 ldraw::Id pick(const QPoint& where); |
30 void initializeGL() override; |
27 void initializeGL() override; |
31 void resizeGL(int width, int height) override; |
28 void resizeGL(int width, int height) override; |
32 void paintGL() override; |
29 void paintGL() override; |
33 void mouseMoveEvent(QMouseEvent* event) override; |
30 void mouseMoveEvent(QMouseEvent* event) override; |
34 void wheelEvent(QWheelEvent* event) override; |
31 void wheelEvent(QWheelEvent* event) override; |
35 glm::vec3 viewport(const glm::vec3& point); |
|
36 Model* const model; |
32 Model* const model; |
37 DocumentManager* const documents; |
33 DocumentManager* const documents; |
38 const ldraw::ColorTable& colorTable; |
34 const ldraw::ColorTable& colorTable; |
39 gl::Compiler* const compiler; |
35 gl::Compiler* const compiler; |
40 ldraw::Id highlighted = ldraw::NULL_ID; |
36 ldraw::Id highlighted = ldraw::NULL_ID; |
41 std::optional<glm::vec3> screenToModelCoordinates(const QPoint& point, const geom::Plane& plane); |
37 std::optional<glm::vec3> screenToModelCoordinates(const QPoint& point, const geom::Plane& plane); |
42 QPointF modelToScreenCoordinates(const glm::vec3& point); |
38 QPointF modelToScreenCoordinates(const glm::vec3& point); |
43 glm::vec3 unproject(const glm::vec3& win); |
39 glm::vec3 unproject(const glm::vec3& win); |
|
40 glm::mat4 projectionMatrix; |
|
41 glm::mat4 viewMatrix; |
|
42 glm::mat4 modelMatrix; |
|
43 glm::vec4 viewportVector; |
|
44 glm::quat modelQuaternion; |
|
45 QPoint lastMousePosition; |
|
46 gl::RenderPreferences renderPreferences; |
|
47 signals: |
|
48 void projectionMatrixChanged(); |
|
49 void modelMatrixChanged(); |
|
50 void viewMatrixChanged(); |
|
51 void renderPreferencesChanged(); |
44 private: |
52 private: |
45 void setFragmentStyle(gl::FragmentStyle fragStyle); |
53 void setFragmentStyle(gl::FragmentStyle fragStyle); |
46 void renderAllArrays(); |
54 void renderAllArrays(); |
47 void renderScene(); |
55 void renderScene(); |
48 void updateViewMatrix(); |
56 void updateViewMatrix(); |
49 void updateModelMatrix(); |
57 void updateModelMatrix(); |
50 void setupBackgroundColor(); |
58 void setupBackgroundColor(); |
51 QPointF lastMousePosition; |
|
52 gl::RenderPreferences renderPreferences; |
|
53 glm::mat4 projectionMatrix; |
|
54 glm::mat4 viewMatrix; |
|
55 glm::vec4 viewportVector; |
|
56 glm::quat modelQuaternion; |
|
57 std::optional<GridProgram> gridProgram; |
|
58 static constexpr double MIN_ZOOM = 0.0; |
59 static constexpr double MIN_ZOOM = 0.0; |
59 static constexpr double MAX_ZOOM = 3.0; |
60 static constexpr double MAX_ZOOM = 3.0; |
60 double zoom = 1.0; |
61 double zoom = 1.0; |
61 bool initialized = false; |
62 bool initialized = false; |
62 void renderVao(const gl::ArrayClass arrayClass); |
63 void renderVao(const gl::ArrayClass arrayClass); |