]> AND Private Git Repository - blast.git/blobdiff - ConnectionItem.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
start modifying read/write blocks and project to take into account control ifaces
[blast.git] / ConnectionItem.h
index 567a31d4e83edcb2b0252b5b33e21fca4761754f..c64839f0c69cf0628a7ee01731aab0d9139c50bf 100644 (file)
 class Dispatcher;
 class Parameters;
 class InterfaceItem;
 class Dispatcher;
 class Parameters;
 class InterfaceItem;
+class GroupScene;
 
 using namespace std;
 using namespace Qt;
 
 
 using namespace std;
 using namespace Qt;
 
-/* NOTES :
+/*! \brief ConnectionItem class
 
 
-   A connection item represent a graphical link between two interface items.
+   A ConnectionItem represents a graphical link between two interface items.
    Even if it links two in/out interfaces, it is always oriented.
    The orientation depends on the type and direction of linked interfaces :
 
    Even if it links two in/out interfaces, it is always oriented.
    The orientation depends on the type and direction of linked interfaces :
 
@@ -50,18 +51,38 @@ public:
   QPainterPath shape() const;
 
   void prepareChange();
   QPainterPath shape() const;
 
   void prepareChange();
-
+  
+  // getters
+  inline GroupScene* getScene() { return (GroupScene*)(scene()); }
   inline InterfaceItem* getToInterfaceItem(){ return toInterfaceItem; }
   inline InterfaceItem* getToInterfaceItem(){ return toInterfaceItem; }
-  inline void setToInterfaceItem(InterfaceItem *iface){ toInterfaceItem = iface; }
   inline InterfaceItem* getFromInterfaceItem(){ return fromInterfaceItem; }
   inline InterfaceItem* getFromInterfaceItem(){ return fromInterfaceItem; }
-  inline void setFromInterfaceItem(InterfaceItem* iface){ fromInterfaceItem = iface; }
   inline int getId(){ return id; }
   inline int getId(){ return id; }
+  
+  // setters
+  inline void setToInterfaceItem(InterfaceItem *iface){ toInterfaceItem = iface; }  
+  inline void setFromInterfaceItem(InterfaceItem* iface){ fromInterfaceItem = iface; }  
   inline void setId(int id){ this->id = id; }
   inline void setId(int id){ this->id = id; }
-  inline bool isSelected() { return selected; }
   void setSelected(bool selected);
   void setSelected(bool selected);
-
+  inline void setVisible(bool state) { visible = state; }
+  
+  // testers
+  inline bool isSelected() { return selected; }
+  
+  // others
   void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
   void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
-  void setPathes();
+
+  /*!
+   * \brief setPath
+   * setPath() allows to compute the graphical shape of the ConnectionItem
+   * taking into account the position/direction of from and to interface items.
+   * Depending on their vlaue, it calls on of the dedicated methods.
+   *
+   * CAUTION: this method calls prepareGeometryChange() so that the scene
+   * can automatically updates and redraw the ConnectionItem. Thus, there is
+   * no need to call update() after the termination of this method.
+   *
+   */
+  void setPath();
   void addInterPoint(QPointF point);
 
   static int counter;
   void addInterPoint(QPointF point);
 
   static int counter;
@@ -73,7 +94,14 @@ protected:
   void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
 
 private:
   void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
 
 private:
-
+  void computeEsse(int orientationFrom);
+  void computeStaircase(int orientationFrom);
+  void computeHookSmallEnd(int orientationFrom, int orientationTo);
+  void computeHookSmallStart(int orientationFrom, int orientationTo);
+  void computeOpenRect(int orientationFrom, int orientationTo);
+  void computeElle(int orientationFrom);
+  void computeCorner(int orientationFrom);
+  
   QPointF pointFrom;
   QPointF pointTo;
   QList<QPointF> interPoints;
   QPointF pointFrom;
   QPointF pointTo;
   QList<QPointF> interPoints;
@@ -92,13 +120,8 @@ private:
   bool selected;
   int id;
   int marginConn;
   bool selected;
   int id;
   int marginConn;
-  void computeEsse(int orientationFrom);
-  void computeStaircase(int orientationFrom);
-  void computeHookSmallEnd(int orientationFrom, int orientationTo);
-  void computeHookSmallStart(int orientationFrom, int orientationTo);
-  void computeOpenRect(int orientationFrom, int orientationTo);
-  void computeElle(int orientationFrom);
-  void computeCorner(int orientationFrom);
+  
+  bool visible;
 
   friend QDataStream &operator << (QDataStream &out, ConnectionItem &c);
   friend QDataStream &operator >> (QDataStream &in, ConnectionItem &c);
 
   friend QDataStream &operator << (QDataStream &out, ConnectionItem &c);
   friend QDataStream &operator >> (QDataStream &in, ConnectionItem &c);