Tue, 24 May 2022 16:11:10 +0300
more work on circle tool + cleanup
185 | 1 | #include "pathtool.h" |
2 | #include "modeleditor.h" | |
3 | #include "linetypes/edge.h" | |
4 | #include "document.h" | |
5 | ||
6 | PathTool::PathTool(Document *document) : | |
7 | AbstractDrawTool{document} | |
8 | { | |
9 | } | |
10 | ||
11 | QString PathTool::name() const | |
12 | { | |
13 | return tr("Draw path"); | |
14 | } | |
15 | ||
16 | QString PathTool::toolTip() const | |
17 | { | |
18 | return tr("Draw paths"); | |
19 | } | |
20 | ||
21 | void PathTool::overpaint(Canvas* canvas, QPainter* painter) const | |
22 | { | |
23 | painter->setPen(QPen{Qt::black, 2, Qt::DashLine, Qt::RoundCap, Qt::MiterJoin}); | |
24 | if (this->previewPolygon.size() >= 2) | |
25 | { | |
26 | canvas->drawWorldPolyline(painter, this->previewPolygon); | |
27 | } | |
28 | for (const glm::vec3& point : this->polygon) | |
29 | { | |
30 | canvas->drawWorldPoint(painter, point); | |
31 | } | |
32 | canvas->drawWorldPoint(painter, this->previewPoint); | |
33 | } | |
34 | ||
35 | QString PathTool::iconName() const | |
36 | { | |
37 | return ":/icons/polyline.png"; | |
38 | } | |
39 | ||
40 | void PathTool::closeShape() | |
41 | { | |
42 | std::unique_ptr<ModelEditor> modelEditor = this->document->editModel(); | |
43 | for (std::size_t i = 0; i < this->polygon.size() - 1; i += 1) | |
44 | { | |
45 | modelEditor->append<ldraw::Edge>(std::array{this->polygon[i], this->polygon[i + 1]}, ldraw::EDGE_COLOR); | |
46 | } | |
47 | this->clearPoints(); | |
48 | } |