summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Piekos <mateuszpiekos@gmail.com>2012-06-26 10:18:33 (GMT)
committerMateusz Piekos <mateuszpiekos@gmail.com>2012-06-26 10:20:55 (GMT)
commit99bc38e1d21b0081618485e49b0ab1bcd5bef22f (patch)
tree36a15ffaaa09832234d4296d926b3244a5952bfd /Swift/QtUI/Whiteboard/GView.cpp
parent06bbc72598ece3e62b82471e474b0753d5439f00 (diff)
downloadswift-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.cpp28
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);