src/tools/drawtool.h

changeset 185
a38a0eb007b0
parent 163
36ea1a8aee33
equal deleted inserted replaced
184:35bbfad4d0f4 185:a38a0eb007b0
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 };

mercurial