5 |
5 |
6 class Canvas : public PartRenderer |
6 class Canvas : public PartRenderer |
7 { |
7 { |
8 Q_OBJECT |
8 Q_OBJECT |
9 public: |
9 public: |
|
10 struct MouseClickInfo; |
10 Canvas( |
11 Canvas( |
11 Model* model, |
12 Model* model, |
12 DocumentManager* documents, |
13 DocumentManager* documents, |
13 const ldraw::ColorTable& colorTable, |
14 const ldraw::ColorTable& colorTable, |
14 QWidget* parent = nullptr); |
15 QWidget* parent = nullptr); |
21 void initializeGL() override; |
22 void initializeGL() override; |
22 void paintGL() override; |
23 void paintGL() override; |
23 signals: |
24 signals: |
24 void newStatusText(const QString& newStatusText); |
25 void newStatusText(const QString& newStatusText); |
25 void selectionChanged(const QSet<ldraw::id_t>& newSelection); |
26 void selectionChanged(const QSet<ldraw::id_t>& newSelection); |
|
27 void mouseClick(const MouseClickInfo& info); |
26 private: |
28 private: |
27 void updateGridMatrix(); |
29 void updateGridMatrix(); |
28 glm::vec3 cameraVector() const; |
30 glm::vec3 cameraVector() const; |
29 bool isGridPerpendicularToScreen(float threshold) const; |
31 bool isGridPerpendicularToScreen(float threshold) const; |
30 std::optional<GridProgram> gridProgram; |
32 std::optional<GridProgram> gridProgram; |