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 0000000000000000000000000000000000000000..53d15a1335d8953d39f1439c4354054b63de8f68 --- /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 7c86ef1c0d5ab1a4b00e501ad383f2473574ef00..0d5c433f12bf429d1a371f624735e80197ff448a 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 1e991648c4d8b7b172ed47d30f655811b270c7c6..f56aff41740323976c5c15748812389c4f9e4c8e 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 4d8c7491e8c628e9a9c7bded369d158a1589e0eb..49d0e43b26dea2c7ab8b7e7d7bc3ea91d6326395 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 c8bda3c44181bf2086c0eb42776b2f028a25bf3b..45fc72400c0bf241d7ca490f67327d807e6d3054 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;