1 #pragma once |
1 #pragma once |
2 #include "basetool.h" |
2 #include "basetool.h" |
3 |
3 |
4 class DrawTool : public BaseTool |
4 class AbstractDrawTool : public BaseTool |
|
5 { |
|
6 public: |
|
7 AbstractDrawTool(Document* document); |
|
8 void reset() override; |
|
9 void overpaint(Canvas*, QPainter*) const override; |
|
10 bool mouseMove(Document* document, Canvas* canvas, QMouseEvent* event) override; |
|
11 bool mouseClick(Canvas* canvas, QMouseEvent* event) override; |
|
12 bool keyReleased(Document*, Canvas* canvas, QKeyEvent* event) override; |
|
13 protected: |
|
14 void addCurrentPoint(Canvas *canvas); |
|
15 virtual void addPoint(const glm::vec3& pos); |
|
16 virtual void closeShape() = 0; |
|
17 void removeLastPoint(); |
|
18 void clearPoints(); |
|
19 bool isCloseToExistingPoints(const glm::vec3& pos) const; |
|
20 std::vector<glm::vec3> polygon; |
|
21 std::vector<glm::vec3> previewPolygon; |
|
22 glm::vec3 previewPoint; |
|
23 bool isconcave = false; |
|
24 void updatePreviewPolygon(); |
|
25 }; |
|
26 |
|
27 class DrawTool : public AbstractDrawTool |
5 { |
28 { |
6 Q_OBJECT |
29 Q_OBJECT |
7 |
30 |
8 public: |
31 public: |
9 Q_INVOKABLE DrawTool(Document* document); |
32 Q_INVOKABLE DrawTool(Document* document); |
10 |
33 |
11 QString name() const override; |
34 QString name() const override; |
12 QString toolTip() const override; |
35 QString toolTip() const override; |
13 bool mouseClick(Document* document, Canvas* canvas, QMouseEvent* event) override; |
|
14 bool mouseMove(Document* document, Canvas* canvas, QMouseEvent* event) override; |
|
15 bool keyReleased(Document*, Canvas* canvas, QKeyEvent* event) override; |
|
16 void reset() override; |
|
17 void overpaint(Canvas*, QPainter*) const override; |
|
18 QString iconName() const override; |
36 QString iconName() const override; |
19 private: |
37 protected: |
20 void closeShape(Document *document); |
38 virtual void addPoint(const glm::vec3& pos) override; |
21 std::vector<glm::vec3> polygon; |
39 void closeShape() override; |
22 std::vector<glm::vec3> previewPolygon; |
|
23 glm::vec3 previewPoint; |
|
24 bool isconcave = false; |
|
25 void updatePreviewPolygon(); |
|
26 }; |
40 }; |