From 4e08c9c91fd34e52ca0e5fc5e56f423674356fdf Mon Sep 17 00:00:00 2001
From: Angel <roangel@student.ethz.ch>
Date: Wed, 27 Sep 2017 13:20:29 +0200
Subject: [PATCH] marked center of cf zone. Now we need to change the icon for
 a svg picture that looks better

---
 .../GUI_Qt/CrazyFlyGUI/images/center_rect.svg | 62 +++++++++++++++++++
 .../GUI_Qt/CrazyFlyGUI/include/crazyFlyZone.h |  6 +-
 .../CrazyFlyGUI/include/myGraphicsRectItem.h  |  2 +
 .../GUI_Qt/CrazyFlyGUI/src/crazyFlyZone.cpp   | 17 +++++
 .../CrazyFlyGUI/src/myGraphicsScene.cpp       |  1 +
 5 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/images/center_rect.svg

diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/images/center_rect.svg b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/images/center_rect.svg
new file mode 100644
index 00000000..53d15a13
--- /dev/null
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/images/center_rect.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="center_rect.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="299.90787"
+     inkscape:cy="691.68435"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1855"
+     inkscape:window-height="1056"
+     inkscape:window-x="65"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <circle
+       style="fill:#000000;fill-opacity:1"
+       id="path4136"
+       cx="346.48233"
+       cy="324.04221"
+       r="47.477169" />
+  </g>
+</svg>
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/crazyFlyZone.h b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/crazyFlyZone.h
index 7c86ef1c..0d5c433f 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/crazyFlyZone.h
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/crazyFlyZone.h
@@ -24,16 +24,20 @@ public:
     bool isLinked();
     void removeLink();
 
+    void updateCenterMarker();
+
 protected:
 
 private:
     int _index;
     QGraphicsSimpleTextItem* label;
+    QGraphicsEllipseItem* m_center_marker;
 
     // stuff for linking
     bool m_linked;
     std::string m_crazyfly_linked_name; //in the future this will be a vector of crazyFlies maybe
-};
 
+    void createCenterMarker();
+};
 
 #endif
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsRectItem.h b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsRectItem.h
index 1e991648..f56aff41 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsRectItem.h
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsRectItem.h
@@ -16,6 +16,7 @@ public:
     void lock();
     void unlock();
 
+
 public slots:
 
 signals:
@@ -27,6 +28,7 @@ protected:
 
     virtual void rectSizeChanged() = 0; // pure virtual function, has to be overridden in derived class
 
+
     QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
 
 private:
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/crazyFlyZone.cpp b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/crazyFlyZone.cpp
index 4d8c7491..49d0e43b 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/crazyFlyZone.cpp
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/crazyFlyZone.cpp
@@ -4,6 +4,7 @@
 crazyFlyZone::crazyFlyZone(const QRectF & rect, int index,  QGraphicsItem * parent)
     : myGraphicsRectItem(rect, parent)
 {
+    createCenterMarker();
     this->setPen(QPen(Qt::black, 0));
     setIndex(index);
     m_linked = false;
@@ -19,6 +20,21 @@ void crazyFlyZone::updateLabel(QString string)
     setLabelPosition();
 }
 
+void crazyFlyZone::createCenterMarker()
+{
+    qreal diameter = 0.1 * FROM_METERS_TO_UNITS;
+    m_center_marker = new QGraphicsEllipseItem(QRectF(-diameter/2, -diameter/2, diameter, diameter), this);
+    updateCenterMarker();
+    m_center_marker->setZValue(10); //max z value, always on top of things
+}
+
+void crazyFlyZone::updateCenterMarker()
+{
+    qreal x_offset = this->rect().width()/2;
+    qreal y_offset = this->rect().height()/2;
+    m_center_marker->setPos(this->rect().topLeft().x() + x_offset,this->rect().topLeft().y() + y_offset);
+}
+
 void crazyFlyZone::setLabel(QString string)
 {
     label = new QGraphicsSimpleTextItem(string, this);
@@ -49,6 +65,7 @@ void crazyFlyZone::setIndex(int index)
 void crazyFlyZone::rectSizeChanged() // pure virtual coming from parent
 {
     setLabelPosition();
+    updateCenterMarker();
 }
 
 void crazyFlyZone::linkCF(std::string cf_name)
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
index c8bda3c4..45fc7240 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
@@ -194,6 +194,7 @@ void myGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
             case mode_crazyfly_zones:
             {
                 tmp_crazyfly_zone_item->setRect(QRectF(*p1, mouseEvent->scenePos()));
+                tmp_crazyfly_zone_item->updateCenterMarker();
                 qDebug("Mouse Position: %d, %d", (mouseEvent->scenePos()).toPoint().x(), (mouseEvent->scenePos()).toPoint().y());
                 qDebug("Rectangle BottomRight Position: %d, %d", tmp_crazyfly_zone_item->rect().bottomRight().x(), tmp_crazyfly_zone_item->rect().bottomRight().y());
                 break;
-- 
GitLab