tools/drawMapTest/drawmapscene.cpp
changeset 14354 20178fa3a74a
parent 14353 5cc671f988e7
child 14355 bc29fc6df7a2
--- a/tools/drawMapTest/drawmapscene.cpp	Sat Dec 01 20:38:45 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +0,0 @@
-#include <QDebug>
-#include <QGraphicsSceneMouseEvent>
-#include <QGraphicsPathItem>
-#include <QtEndian>
-
-#include "drawmapscene.h"
-
-template <class T> T sqr(const T & x)
-{
-    return x*x;
-}
-
-DrawMapScene::DrawMapScene(QObject *parent) :
-    QGraphicsScene(parent),
-    m_pen(Qt::yellow),
-    m_brush(Qt::yellow)
-{
-    setSceneRect(0, 0, 4096, 2048);
-
-    QLinearGradient gradient(0, 0, 0, 2048);
-    gradient.setColorAt(0, QColor(60, 60, 155));
-    gradient.setColorAt(1, QColor(155, 155, 60));
-    setBackgroundBrush(QBrush(gradient));
-
-    m_pen.setWidth(67);
-    m_pen.setJoinStyle(Qt::RoundJoin);
-    m_pen.setCapStyle(Qt::RoundCap);
-    m_currPath = 0;
-}
-
-void DrawMapScene::mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent)
-{
-
-    qDebug() << "move" << mouseEvent->scenePos();
-
-    if(m_currPath && (mouseEvent->buttons() & Qt::LeftButton))
-    {
-        QPainterPath path = m_currPath->path();
-        path.lineTo(mouseEvent->scenePos());
-        paths.first().append(mouseEvent->scenePos().toPoint());
-        m_currPath->setPath(path);
-
-        emit pathChanged();
-    }
-}
-
-void DrawMapScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent)
-{
-    qDebug() << "press" << 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());
-    paths.prepend(QList<QPoint>() << mouseEvent->scenePos().toPoint());
-    m_currPath->setPath(path);
-
-    emit pathChanged();
-}
-
-void DrawMapScene::mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent)
-{
-    qDebug() << "release" << mouseEvent->scenePos();
-
-    simplifyLast();
-
-    m_currPath = 0;
-}
-
-void DrawMapScene::undo()
-{
-    if(items().size())
-    {
-        removeItem(items().first());
-        paths.removeFirst();
-
-        emit pathChanged();
-    }
-}
-
-QByteArray DrawMapScene::encode()
-{
-    QByteArray b;
-
-    foreach(QList<QPoint> points, paths)
-    {
-        int cnt = 0;
-        foreach(QPoint point, points)
-        {
-            qint16 px = qToBigEndian((qint16)point.x());
-            qint16 py = qToBigEndian((qint16)point.y());
-            quint8 flags = 2;
-            if(!cnt) flags |= 0x80;
-            b.append((const char *)&px, 2);
-            b.append((const char *)&py, 2);
-            b.append((const char *)&flags, 1);
-
-            ++cnt;
-        }
-
-    }
-
-    return b;
-}
-
-void DrawMapScene::decode(QByteArray data)
-{
-    clear();
-    paths.clear();
-
-    QList<QPoint> points;
-
-    while(data.size() >= 5)
-    {
-        qint16 px = qFromBigEndian(*(qint16 *)data.data());
-        data.remove(0, 2);
-        qint16 py = qFromBigEndian(*(qint16 *)data.data());
-        data.remove(0, 2);
-        quint8 flags = *(quint8 *)data.data();
-        data.remove(0, 1);
-
-        //last chunk or first point
-        if((data.size() < 5) || (flags & 0x80))
-        {
-            if(points.size())
-            {
-                qDebug() << points;
-                addPath(pointsToPath(points), m_pen);
-                paths.prepend(points);
-
-                points.clear();
-            }
-        }
-
-        points.append(QPoint(px, py));
-    }
-}
-
-void DrawMapScene::simplifyLast()
-{
-    QList<QPoint> points = paths[0];
-
-    QPoint prevPoint = points.first();
-    int i = 1;
-    while(i < points.size())
-    {
-        if( (i != points.size() - 1)
-            && (sqr(prevPoint.x() - points[i].x()) + sqr(prevPoint.y() - points[i].y()) < 1000)
-          )
-            points.removeAt(i);
-        else
-        {
-            prevPoint = points[i];
-            ++i;
-        }
-    }
-
-    paths[0] = points;
-
-
-    // redraw path
-    {
-        QGraphicsPathItem * pathItem = static_cast<QGraphicsPathItem *>(items()[0]);
-        pathItem->setPath(pointsToPath(paths[0]));
-    }
-
-    emit pathChanged();
-}
-
-QPainterPath DrawMapScene::pointsToPath(const QList<QPoint> points)
-{
-    QPainterPath path;
-
-    if(points.size())
-    {
-        QPointF p = points[0] + QPointF(0.01, 0.01);
-        path.moveTo(p);
-
-        foreach(QPoint p, points)
-            path.lineTo(p);
-    }
-
-    return path;
-}