summaryrefslogtreecommitdiffstats
path: root/ellipse.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 /ellipse.cpp
parent31eb4d5361026dad3107dc647ac7c3ff63f50c7b (diff)
downloadGUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.tar.gz
GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.zip
Add different shapes for drawing
Diffstat (limited to 'ellipse.cpp')
-rw-r--r--ellipse.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/ellipse.cpp b/ellipse.cpp
new file mode 100644
index 0000000..0377b66
--- /dev/null
+++ b/ellipse.cpp
@@ -0,0 +1,41 @@
+#include "ellipse.h"
+
+Ellipse::Ellipse()
+{
+
+}
+
+bool Ellipse::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 Ellipse::draw(QPainter *painter)
+{
+ if (m_selected)
+ {
+ QPen penTemp(Qt::DotLine);
+ penTemp.setColor(Qt::red);
+ painter->setPen(penTemp);
+
+ painter->drawEllipse(QPoint(p1().rx() - (p2().rx() - p1().rx()), p1().ry()), 5, 5);
+ painter->drawEllipse(QPoint(p1().rx() + (p2().rx() - p1().rx()), p1().ry()), 5, 5);
+ painter->drawEllipse(QPoint(p1().rx(), p1().ry() + (p2().ry() - p1().ry())), 5, 5);
+ painter->drawEllipse(QPoint(p1().rx(), p1().ry() - (p2().ry() - p1().ry())), 5, 5);
+ }
+ else
+ {
+ QPen penNormal(Qt::SolidLine);
+ penNormal.setColor(Qt::black);
+ painter->setPen(penNormal);
+ }
+
+ painter->drawEllipse(p1(), p2().rx() - p1().rx(), p2().ry() - p1().ry());
+}