src/ui/canvas.h

changeset 111
1f42c03fafca
parent 110
d922431eacf7
child 112
5760cbb32bc0
equal deleted inserted replaced
110:d922431eacf7 111:1f42c03fafca
8 8
9 class Canvas : public PartRenderer 9 class Canvas : public PartRenderer
10 { 10 {
11 Q_OBJECT 11 Q_OBJECT
12 public: 12 public:
13 struct MouseClickInfo;
14 struct MouseMoveInfo;
15 using OverpaintCallback = std::function<void(Canvas*, QPainter*)>; 13 using OverpaintCallback = std::function<void(Canvas*, QPainter*)>;
16 Canvas( 14 Canvas(
17 Model* model, 15 Model* model,
18 DocumentManager* documents, 16 DocumentManager* documents,
19 const ldraw::ColorTable& colorTable, 17 const ldraw::ColorTable& colorTable,
33 void initializeGL() override; 31 void initializeGL() override;
34 void paintGL() override; 32 void paintGL() override;
35 signals: 33 signals:
36 void newStatusText(const QString& newStatusText); 34 void newStatusText(const QString& newStatusText);
37 void selectionChanged(const QSet<ldraw::id_t>& newSelection); 35 void selectionChanged(const QSet<ldraw::id_t>& newSelection);
38 void mouseClick(const MouseClickInfo& info); 36 void mouseClick(Canvas* canvas);
39 void mouseMove(const MouseMoveInfo& info); 37 void mouseMove(Canvas* canvas);
40 private: 38 private:
41 void updateGridMatrix(); 39 void updateGridMatrix();
42 glm::vec3 cameraVector() const; 40 glm::vec3 cameraVector() const;
43 bool isGridPerpendicularToScreen(float threshold) const; 41 bool isGridPerpendicularToScreen(float threshold) const;
44 std::optional<GridProgram> gridProgram; 42 std::optional<GridProgram> gridProgram;
48 geom::Plane gridPlane; 46 geom::Plane gridPlane;
49 int totalMouseMove = 0; 47 int totalMouseMove = 0;
50 QSet<ldraw::id_t> selection; 48 QSet<ldraw::id_t> selection;
51 OverpaintCallback overpaintCallback = nullptr; 49 OverpaintCallback overpaintCallback = nullptr;
52 }; 50 };
53
54 struct Canvas::MouseClickInfo
55 {
56 std::optional<glm::vec3> worldPosition;
57 Canvas* invoker;
58 };
59
60 struct Canvas::MouseMoveInfo
61 {
62 std::optional<glm::vec3> worldPosition;
63 Canvas* invoker;
64 };

mercurial