Advertisement
Valderman

NodeEdge.hpp

May 16th, 2022
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.49 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* option = nullptr,
  55.                         QWidget* widget = nullptr)                         override;
  56.  
  57.         virtual bool         contains(const QPointF &point)          const override;
  58.         virtual bool         isObscuredBy(const QGraphicsItem *item) const override;
  59.         virtual QPainterPath opaqueArea()                            const override;
  60.         virtual QPainterPath shape()                                 const override;
  61.         virtual int          type()                                  const override;
  62.  
  63.     private:
  64.         NodeEdgeType            nodeType;
  65.         std::shared_ptr<Socket> start;
  66.         std::shared_ptr<Socket> finish;
  67.  
  68.     private:
  69.         QPointF source      = {0.0, 0.0};
  70.         QPointF destination = {0.0, 0.0};
  71. };
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement