21 DocumentManager* documents, |
21 DocumentManager* documents, |
22 const ldraw::ColorTable& colorTable, |
22 const ldraw::ColorTable& colorTable, |
23 QWidget* parent = nullptr); |
23 QWidget* parent = nullptr); |
24 ~PartRenderer() override; |
24 ~PartRenderer() override; |
25 void setRenderPreferences(const gl::RenderPreferences& newPreferences); |
25 void setRenderPreferences(const gl::RenderPreferences& newPreferences); |
|
26 static glm::vec3 viewport(const glm::vec3& point, float width, float height); |
26 protected: |
27 protected: |
27 ldraw::Id pick(const QPoint& where); |
28 ldraw::Id pick(const QPoint& where); |
28 void initializeGL() override; |
29 void initializeGL() override; |
29 void resizeGL(int width, int height) override; |
30 void resizeGL(int width, int height) override; |
30 void paintGL() override; |
31 void paintGL() override; |
31 void mouseMoveEvent(QMouseEvent* event) override; |
32 void mouseMoveEvent(QMouseEvent* event) override; |
32 void wheelEvent(QWheelEvent* event) override; |
33 void wheelEvent(QWheelEvent* event) override; |
|
34 glm::vec3 viewport(const glm::vec3& point); |
33 Model* const model; |
35 Model* const model; |
34 DocumentManager* const documents; |
36 DocumentManager* const documents; |
35 const ldraw::ColorTable& colorTable; |
37 const ldraw::ColorTable& colorTable; |
36 gl::Compiler* const compiler; |
38 gl::Compiler* const compiler; |
37 ldraw::Id highlighted = ldraw::NULL_ID; |
39 ldraw::Id highlighted = ldraw::NULL_ID; |
38 std::optional<glm::vec3> cameraToGrid(const QPoint& point); |
40 std::optional<glm::vec3> screenToModelCoordinates(const QPoint& point); |
39 QPointF worldToCamera(const glm::vec3& point); |
41 QPointF modelToScreenCoordinates(const glm::vec3& point); |
40 private: |
42 private: |
41 void setFragmentStyle(gl::FragmentStyle fragStyle); |
43 void setFragmentStyle(gl::FragmentStyle fragStyle); |
42 void renderAllArrays(); |
44 void renderAllArrays(); |
43 void renderScene(); |
45 void renderScene(); |
44 void updateViewMatrix(); |
46 void updateViewMatrix(); |
46 void setupBackgroundColor(); |
48 void setupBackgroundColor(); |
47 QPointF lastMousePosition; |
49 QPointF lastMousePosition; |
48 gl::RenderPreferences renderPreferences; |
50 gl::RenderPreferences renderPreferences; |
49 glm::mat4 projectionMatrix; |
51 glm::mat4 projectionMatrix; |
50 glm::mat4 viewMatrix; |
52 glm::mat4 viewMatrix; |
51 glm::mat3 viewportMatrix; |
|
52 glm::quat modelQuaternion; |
53 glm::quat modelQuaternion; |
53 std::optional<GridProgram> gridProgram; |
54 std::optional<GridProgram> gridProgram; |
54 static constexpr double MIN_ZOOM = 0.0; |
55 static constexpr double MIN_ZOOM = 0.0; |
55 static constexpr double MAX_ZOOM = 3.0; |
56 static constexpr double MAX_ZOOM = 3.0; |
56 double zoom = 1.0; |
57 double zoom = 1.0; |