Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- //---------------------------------------------------------------------------------//
- //---------------------------------------------------------------------------------//
- #include <QGraphicsPathItem>
- //---------------------------------------------------------------------------------//
- //---------------------------------------------------------------------------------//
- #include "Socket.hpp"
- //---------------------------------------------------------------------------------//
- enum NodeEdgeType
- {
- DIRECT = 0,
- BEZIER = 1
- };
- //---------------------------------------------------------------------------------//
- class NodeEdge : public QGraphicsObject, public QGraphicsPathItem
- {
- Q_OBJECT
- public:
- // constructor:
- explicit NodeEdge(
- NodeEdgeType type_ = NodeEdgeType::DIRECT,
- std::shared_ptr<Socket> start_ = nullptr,
- std::shared_ptr<Socket> finish_ = nullptr
- );
- // deleted:
- NodeEdge(const NodeEdge&) = delete;
- NodeEdge(NodeEdge&&) = delete;
- NodeEdge& operator= (const NodeEdge&) = delete;
- NodeEdge& operator= (NodeEdge&& other) = delete;
- // destructor:
- ~NodeEdge();
- // methods:
- void setSource (QPointF source);
- void setDestination (QPointF destination);
- void updatePathDirect();
- void updatePathBezier();
- protected:
- virtual QRectF boundingRect () const override;
- virtual void paint(
- QPainter* painter,
- const QStyleOptionGraphicsItem* option = nullptr,
- QWidget* widget = nullptr) override;
- virtual bool contains(const QPointF &point) const override;
- virtual bool isObscuredBy(const QGraphicsItem *item) const override;
- virtual QPainterPath opaqueArea() const override;
- virtual QPainterPath shape() const override;
- virtual int type() const override;
- private:
- NodeEdgeType nodeType;
- std::shared_ptr<Socket> start;
- std::shared_ptr<Socket> finish;
- private:
- QPointF source = {0.0, 0.0};
- QPointF destination = {0.0, 0.0};
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement