Advertisement
Valderman

NodeEdge.hpp

May 5th, 2022
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #pragma once
  2. //---------------------------------------------------------------------------------//
  3.  
  4.  
  5. //---------------------------------------------------------------------------------//
  6. #include <QGraphicsPathItem>
  7. //---------------------------------------------------------------------------------//
  8.  
  9.  
  10. //---------------------------------------------------------------------------------//
  11. #include "Socket.hpp"
  12. //---------------------------------------------------------------------------------//
  13.  
  14.  
  15. enum NodeEdgeType
  16. {
  17.     DIRECT = 0,
  18.     BEZIER = 1
  19. };
  20.  
  21.  
  22. //---------------------------------------------------------------------------------//
  23. class NodeEdge : public QGraphicsObject, public QGraphicsPathItem
  24. {
  25.     Q_OBJECT
  26.     public:
  27.         // constructor:
  28.         explicit NodeEdge(
  29.                     NodeEdgeType            type_   = NodeEdgeType::DIRECT,
  30.                     std::shared_ptr<Socket> start_  = nullptr,
  31.                     std::shared_ptr<Socket> finish_ = nullptr
  32.                  );
  33.  
  34.         // deleted:
  35.         NodeEdge(const NodeEdge&)              = delete;
  36.         NodeEdge(NodeEdge&&)                   = delete;
  37.         NodeEdge& operator= (const NodeEdge&)  = delete;
  38.         NodeEdge& operator= (NodeEdge&& other) = delete;
  39.  
  40.         // destructor:
  41.         ~NodeEdge();
  42.  
  43.         // methods:
  44.         void setSource      (QPointF source);
  45.         void setDestination (QPointF destination);
  46.  
  47.         void updatePathDirect();
  48.         void updatePathBezier();
  49.  
  50.     protected:
  51.         virtual QRectF boundingRect ()                   const override;
  52.         virtual void paint(
  53.                         QPainter* painter,
  54.                         const QStyleOptionGraphicsItem*,
  55.                         QWidget*)                        override;
  56.  
  57.     private:
  58.         NodeEdgeType            type;
  59.         std::shared_ptr<Socket> start;
  60.         std::shared_ptr<Socket> finish;
  61.  
  62.     private:
  63.         QPointF source      = {0.0, 0.0};
  64.         QPointF destination = {0.0, 0.0};
  65. };
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement