21 glm::vec4 viewportVector; |
21 glm::vec4 viewportVector; |
22 glm::quat modelQuaternion; |
22 glm::quat modelQuaternion; |
23 glm::vec3 modelViewOrigin = {0, 0, 0}; |
23 glm::vec3 modelViewOrigin = {0, 0, 0}; |
24 QPoint lastMousePosition; |
24 QPoint lastMousePosition; |
25 int totalMouseMove = 0; |
25 int totalMouseMove = 0; |
26 gl::RenderPreferences renderPreferences; |
|
27 double zoom = 1.0; |
26 double zoom = 1.0; |
28 bool initialized = false; |
27 bool initialized = false; |
29 bool needBuild = true; |
28 bool needBuild = true; |
30 std::vector<RenderLayer*> activeRenderLayers; |
29 std::vector<RenderLayer*> activeRenderLayers; |
31 std::vector<RenderLayer*> inactiveRenderLayers; |
30 std::vector<RenderLayer*> inactiveRenderLayers; |
32 std::chrono::time_point<std::chrono::steady_clock> lastClickTime; |
31 std::chrono::time_point<std::chrono::steady_clock> lastClickTime; |
33 bool frozen = false; |
32 bool frozen = false; |
34 public: |
33 public: |
|
34 static const gl::RenderPreferences default_render_preferences; |
|
35 static const gl::build_preferences default_build_preferences; |
|
36 const gl::RenderPreferences* render_preferences = &PartRenderer::default_render_preferences; |
|
37 const gl::build_preferences* build_preferences = &PartRenderer::default_build_preferences; |
35 PartRenderer( |
38 PartRenderer( |
36 QTextDocument* model, |
39 QTextDocument* model, |
37 DocumentManager* documents, |
40 DocumentManager* documents, |
38 const ColorTable& colorTable, |
41 const ColorTable& colorTable, |
39 QWidget* parent = nullptr); |
42 QWidget* parent = nullptr); |
40 ~PartRenderer() override; |
43 ~PartRenderer() override; |
41 void setRenderPreferences(const gl::RenderPreferences& newPreferences); |
|
42 ModelId getHighlightedObject() const; |
44 ModelId getHighlightedObject() const; |
43 void addRenderLayer(RenderLayer* layer); |
45 void addRenderLayer(RenderLayer* layer); |
44 void setLayerEnabled(RenderLayer* layer, bool enabled); |
46 void setLayerEnabled(RenderLayer* layer, bool enabled); |
45 std::optional<glm::vec3> screenToModelCoordinates(const QPointF& point, const Plane& plane) const; |
47 std::optional<glm::vec3> screenToModelCoordinates(const QPointF& point, const Plane& plane) const; |
46 QPointF modelToScreenCoordinates(const glm::vec3& point) const; |
48 QPointF modelToScreenCoordinates(const glm::vec3& point) const; |
48 std::int32_t pick(QPoint where); |
50 std::int32_t pick(QPoint where); |
49 void setSelection(const QSet<std::int32_t>& selectedIds); |
51 void setSelection(const QSet<std::int32_t>& selectedIds); |
50 glm::vec3 cameraVector(const QPointF& point) const; |
52 glm::vec3 cameraVector(const QPointF& point) const; |
51 Line<3> cameraLine(const QPointF& point) const; |
53 Line<3> cameraLine(const QPointF& point) const; |
52 Q_SLOT void setModelViewOrigin(const glm::vec3& newViewOrigin); |
54 Q_SLOT void setModelViewOrigin(const glm::vec3& newViewOrigin); |
|
55 Q_SLOT void build(); |
53 Q_SIGNALS: |
56 Q_SIGNALS: |
54 void projectionMatrixChanged(const glm::mat4& newMatrix); |
57 void projectionMatrixChanged(const glm::mat4& newMatrix); |
55 void modelMatrixChanged(const glm::mat4& newMatrix); |
58 void modelMatrixChanged(const glm::mat4& newMatrix); |
56 void viewMatrixChanged(const glm::mat4& newMatrix); |
59 void viewMatrixChanged(const glm::mat4& newMatrix); |
57 void renderPreferencesChanged(); |
|
58 void message(const Message& message); |
60 void message(const Message& message); |
59 private: |
61 private: |
60 void initializeGL() override; |
62 void initializeGL() override; |
61 void resizeGL(int width, int height) override; |
63 void resizeGL(int width, int height) override; |
62 void paintGL() override; |
64 void paintGL() override; |
68 glm::vec3 unproject(const glm::vec3& win) const; |
70 glm::vec3 unproject(const glm::vec3& win) const; |
69 void setFragmentStyle(gl::FragmentStyle fragStyle); |
71 void setFragmentStyle(gl::FragmentStyle fragStyle); |
70 void renderScene(); |
72 void renderScene(); |
71 void updateViewMatrix(); |
73 void updateViewMatrix(); |
72 void updateModelMatrix(); |
74 void updateModelMatrix(); |
73 Q_SLOT void build(); |
|
74 void renderVao(const gl::ArrayClass arrayClass, const GLenum glType); |
75 void renderVao(const gl::ArrayClass arrayClass, const GLenum glType); |
75 template<gl::ArrayClass arrayClass> |
76 template<gl::ArrayClass arrayClass> |
76 void renderVao(); |
77 void renderVao(); |
77 void checkForGLErrors(); |
78 void checkForGLErrors(); |
78 }; |
79 }; |