src/tools/pathtool.cpp

changeset 191
d355d4c52d51
parent 190
3dbdc243f053
child 192
e6faeffed1d1
equal deleted inserted replaced
190:3dbdc243f053 191:d355d4c52d51
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 }

mercurial