src/tools/drawtool.h

changeset 191
d355d4c52d51
parent 190
3dbdc243f053
child 192
e6faeffed1d1
equal deleted inserted replaced
190:3dbdc243f053 191:d355d4c52d51
1 #pragma once
2 #include "basetool.h"
3
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
28 {
29 Q_OBJECT
30
31 public:
32 Q_INVOKABLE DrawTool(Document* document);
33
34 QString name() const override;
35 QString toolTip() const override;
36 QString iconName() const override;
37 protected:
38 virtual void addPoint(const glm::vec3& pos) override;
39 void closeShape() override;
40 };

mercurial