From 2778d2d6c0821a7a1622ca4312416739525781be Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Sun, 17 May 2015 19:19:38 +0200 Subject: Add different shapes for drawing --- ellipse.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ellipse.cpp (limited to 'ellipse.cpp') 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()); +} -- cgit v1.2.3-70-g09d2