diff -r 2314bb0c433d -r 969e411c72aa tools/drawMapTest/drawmapscene.cpp --- a/tools/drawMapTest/drawmapscene.cpp Sat Nov 27 23:57:31 2010 +0300 +++ b/tools/drawMapTest/drawmapscene.cpp Sun Nov 28 17:23:51 2010 +0300 @@ -1,21 +1,25 @@ #include #include +#include #include "drawmapscene.h" DrawMapScene::DrawMapScene(QObject *parent) : QGraphicsScene(parent), - m_pen(Qt::black), - m_brush(Qt::black) + m_pen(Qt::yellow), + m_brush(Qt::yellow) { setSceneRect(0, 0, 4096, 2048); QLinearGradient gradient(0, 0, 0, 2048); - gradient.setColorAt(0, QColor(160, 160, 255)); - gradient.setColorAt(1, QColor(255, 255, 160)); + gradient.setColorAt(0, QColor(60, 60, 155)); + gradient.setColorAt(1, QColor(155, 155, 60)); setBackgroundBrush(QBrush(gradient)); - m_halfWidth = 67; + m_pen.setWidth(67); + m_pen.setJoinStyle(Qt::RoundJoin); + m_pen.setCapStyle(Qt::RoundCap); + m_currPath = 0; } void DrawMapScene::mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent) @@ -23,30 +27,40 @@ qDebug() << "move" << mouseEvent->scenePos(); - if(mouseEvent->buttons() && Qt::LeftButton) - drawFigure(mouseEvent->scenePos()); + if(m_currPath && (mouseEvent->buttons() & Qt::LeftButton)) + { + QPainterPath path = m_currPath->path(); + path.lineTo(mouseEvent->scenePos()); + m_currPath->setPath(path); + //drawFigure(mouseEvent->scenePos()); + } } void DrawMapScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) { qDebug() << "press" << mouseEvent->scenePos(); - drawFigure(mouseEvent->scenePos()); + m_currPath = addPath(QPainterPath(), m_pen); + + QPainterPath path = m_currPath->path(); + QPointF p = mouseEvent->scenePos(); + p += QPointF(0.01, 0.01); + path.moveTo(p); + path.lineTo(mouseEvent->scenePos()); + m_currPath->setPath(path); + + //drawFigure(mouseEvent->scenePos()); } void DrawMapScene::mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent) { qDebug() << "release" << mouseEvent->scenePos(); + + m_currPath = 0; } -void DrawMapScene::drawFigure(const QPointF & point) +void DrawMapScene::undo() { - addEllipse( - point.x() - m_halfWidth, - point.y() - m_halfWidth, - m_halfWidth * 2, - m_halfWidth * 2, - m_pen, - m_brush - ); + if(items().size()) + removeItem(items().first()); }