#ifndef MV2DELEMENTELEVATOR_H #define MV2DELEMENTELEVATOR_H #include "MV2DElement.h" #include "HasMoveableNodes.h" #include "MapViewElementHelper.h" #include #include "../../UIHelper.h" class MV2DElementElevator : public MV2DElement, public HasMoveableNodes { private: Floorplan::Elevator* elevator; public: /** ctor with the AP to render/edit */ MV2DElementElevator(Floorplan::Elevator* elevator) : elevator(elevator) {;} BBox2 getBoundingBox() const override { BBox2 bbox; const float max = std::max(elevator->width, elevator->depth); bbox.add(Point2(elevator->center.x, elevator->center.y)); bbox.grow(Point2(max/2, max/2)); return bbox; } /** get the element's minimal distance (nearest whatsoever) to the given point */ ClickDist getMinDistanceXY(const Point2 p) const override { // std::vector points = elevator->getPoints().points; // points.push_back(elevator->center); // auto it minEl = std::min_element(points.begin(), points.end(), return ClickDist(p.getDistance(elevator->center), ClickDistType::DIRECT); } /** repaint me */ void paint(Painter& p) override { // area const Floorplan::Polygon2 poly = elevator->getPoints(); p.setPenBrush(Qt::gray, Qt::lightGray); p.drawPolygon(poly.points); // outline QPen pen; pen.setWidth(2); pen.setColor(QColor(0,0,0)); p.setPenBrush(pen, Qt::NoBrush); //p.drawLine(poly.points[0], poly.points[1]); p.drawLine(poly.points[1], poly.points[2]); p.drawLine(poly.points[2], poly.points[3]); p.drawLine(poly.points[3], poly.points[0]); if (selectedUserIdx == 0) { p.setPenBrush(Qt::black, CFG::SEL_COLOR); p.drawCircle(elevator->center); } else if (hasFocus()) { p.setPenBrush(Qt::black, Qt::NoBrush); p.drawCircle(elevator->center); } else { //p.setPenBrush(Qt::gray, Qt::NoBrush); //p.drawCircle(elevator->center); } } virtual std::vector getMoveableNodes() const override { return { MoveableNode(0, elevator->center) }; } virtual void onNodeMove(MapView2D* v, const int userIdx, const Point2 newPos) override { (void) v; if (userIdx == 0) {elevator->center.x = newPos.x; elevator->center.y = newPos.y;} } virtual void mousePressed(MapView2D* v, const Point2 p) override { (void) v; (void) p; } virtual void mouseMove(MapView2D* v, const Point2 p) override { (void) v; (void) p; } virtual void mouseReleased(MapView2D* v, const Point2 p) override { (void) v; (void) p; } virtual bool keyPressEvent(MapView2D* v, QKeyEvent *e) override { (void) v; (void) e; return false; } virtual void onFocus() override { ; } virtual void onUnfocus() override { ; } }; #endif // MV2DELEMENTELEVATOR_H