diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-26 10:18:33 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-26 10:20:55 (GMT) |
commit | 99bc38e1d21b0081618485e49b0ab1bcd5bef22f (patch) | |
tree | 36a15ffaaa09832234d4296d926b3244a5952bfd /Swift/QtUI/Whiteboard/GView.cpp | |
parent | 06bbc72598ece3e62b82471e474b0753d5439f00 (diff) | |
download | swift-contrib-99bc38e1d21b0081618485e49b0ab1bcd5bef22f.zip swift-contrib-99bc38e1d21b0081618485e49b0ab1bcd5bef22f.tar.bz2 |
Added handling of circles(ellipses)
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp index e904b32..badbb8e 100644 --- a/Swift/QtUI/Whiteboard/GView.cpp +++ b/Swift/QtUI/Whiteboard/GView.cpp @@ -90,14 +90,29 @@ namespace Swift { } } else if (mode == Circle) { - QGraphicsPathItem* item = qgraphicsitem_cast<QGraphicsPathItem*>(lastItem); + QGraphicsEllipseItem* item = qgraphicsitem_cast<QGraphicsEllipseItem*>(lastItem); QPainterPath path; QPointF beginPoint = item->data(0).toPointF(); QPointF newPoint = this->mapToScene(event->pos()); - path.moveTo((newPoint.x()+beginPoint.x())/2, beginPoint.y()); - path.cubicTo(beginPoint.x(), beginPoint.y(), beginPoint.x(), newPoint.y(), (newPoint.x()+beginPoint.x())/2, newPoint.y()); - path.cubicTo(newPoint.x(), newPoint.y(), newPoint.x(), beginPoint.y(), (newPoint.x()+beginPoint.x())/2, beginPoint.y()); - item->setPath(path); + QRectF rect = item->rect(); + if (beginPoint.x() <= newPoint.x() && beginPoint.y() <= newPoint.y()) { + rect.setTopLeft(beginPoint); + rect.setBottomRight(newPoint); + } + else if (beginPoint.x() > newPoint.x() && beginPoint.y() <= newPoint.y()) { + rect.setTopRight(beginPoint); + rect.setBottomLeft(newPoint); + } + else if (beginPoint.x() <= newPoint.x() && beginPoint.y() > newPoint.y()) { + rect.setBottomLeft(beginPoint); + rect.setTopRight(newPoint); + } + else if (beginPoint.x() > newPoint.x() && beginPoint.y() > newPoint.y()) { + rect.setBottomRight(beginPoint); + rect.setTopLeft(newPoint); + } + + item->setRect(rect); } else if (mode == HandLine) { FreehandLineItem* item = qgraphicsitem_cast<FreehandLineItem*>(lastItem); @@ -177,7 +192,7 @@ namespace Swift { } else if (mode == Circle) { QPointF point = this->mapToScene(event->pos()); - QGraphicsPathItem* item = scene()->addPath(QPainterPath(), pen, brush); + QGraphicsEllipseItem* item = scene()->addEllipse(point.x(), point.y(), 0, 0, pen, brush); QString id = QString::fromStdString(idGenerator.generateID()); items_.insert(id, item); item->setZValue(zValue++); @@ -217,6 +232,7 @@ namespace Swift { item->setData(0, id); item->setDefaultTextColor(pen.color()); textDialog = new TextDialog(item, this); + connect(textDialog, SIGNAL(accepted()), this, SIGNAL(lastItemChanged(textDialog))); textDialog->setAttribute(Qt::WA_DeleteOnClose); textDialog->show(); item->setPos(point); |