summaryrefslogtreecommitdiffstats
path: root/polygon.cpp
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-05-17 19:19:38 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-05-17 19:19:38 +0200
commit2778d2d6c0821a7a1622ca4312416739525781be (patch)
tree8589cab180728a024b8bd29a01fd9a5e85e9bce4 /polygon.cpp
parent31eb4d5361026dad3107dc647ac7c3ff63f50c7b (diff)
downloadGUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.tar.gz
GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.zip
Add different shapes for drawing
Diffstat (limited to 'polygon.cpp')
-rw-r--r--polygon.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/polygon.cpp b/polygon.cpp
new file mode 100644
index 0000000..a292653
--- /dev/null
+++ b/polygon.cpp
@@ -0,0 +1,47 @@
+#include "polygon.h"
+
+Polygon::Polygon()
+ : Line()
+{
+ m_polygon.append(QPoint(0,0));
+ m_polygon.append(QPoint(0,0));
+ m_polygon.append(QPoint(0,0));
+}
+
+bool Polygon::isHit(const QPoint &clickPoint)
+{
+ QVector3D a(p2() - p1());
+ QVector3D r1(p1());
+
+ QVector3D rq(clickPoint);
+
+ float dist = rq.distanceToLine(r1, a.normalized());
+
+ return dist < 5;
+}
+
+void Polygon::draw(QPainter *painter)
+{
+ if (m_selected)
+ {
+ QPen penTemp(Qt::DotLine);
+ penTemp.setColor(Qt::red);
+ painter->setPen(penTemp);
+
+ painter->drawEllipse(p1(), 5, 5);
+ painter->drawEllipse(p2(), 5, 5);
+ painter->drawEllipse(QPoint(p1().rx() + 20, p1().ry() - 20), 5, 5);
+ }
+ else
+ {
+ QPen penNormal(Qt::SolidLine);
+ penNormal.setColor(Qt::black);
+ painter->setPen(penNormal);
+ }
+
+ m_polygon.replace(0, p1());
+ m_polygon.replace(1, p2());
+ m_polygon.replace(2, QPoint(p1().rx() + 20, p1().ry() - 20));
+
+ painter->drawPolygon(m_polygon);
+}