]> Creatis software - cpPlugins.git/blobdiff - appli/cpPipelineEditor/QNEPort.h
More on graph editor
[cpPlugins.git] / appli / cpPipelineEditor / QNEPort.h
index 1f445d003c0aa1587eba25044172284451741246..383167b9bfcc39d977b4024b612afa43fafaafda 100644 (file)
@@ -44,45 +44,151 @@ namespace PipelineEditor
     typedef QGraphicsPathItem Superclass;\r
 \r
     enum { Type = QGraphicsItem::UserType + 1 };\r
-    enum { NamePort = 1, TypePort = 2 };\r
 \r
   public:\r
-    QNEPort( QGraphicsItem* parent = 0, QGraphicsScene* scene = NULL );\r
+    QNEPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
     virtual ~QNEPort( );\r
 \r
-    void setNEBlock( QNEBlock* b );\r
-    void setName( const QString& n );\r
-    void setIsOutput( bool o );\r
-    int radius( );\r
-    bool isOutput( );\r
-    QVector< QNEConnection* >& connections( );\r
-    void setPortFlags( int f );\r
+    void setBlock( QNEBlock* b );\r
+    inline QNEBlock* block( ) const\r
+      { return( this->m_Block ); }\r
+\r
+    virtual void setName( const QString& n );\r
+    inline const QString& name( ) const\r
+      { return( this->m_Name ); }\r
 \r
-    QNEBlock* block( ) const;\r
-    quint64 ptr( );\r
     void setPtr( quint64 p );\r
-    bool isConnected( QNEPort* other );\r
+    inline quint64 ptr( )\r
+      { return( this->m_Ptr ); }\r
 \r
-    inline const QString& portName( ) const\r
-      { return( this->m_Name ); }\r
-    inline int portFlags( ) const\r
-      { return( this->m_PortFlags ); }\r
-    int type( ) const\r
+    inline int radius( ) const\r
+      { return( this->m_Radius ); }\r
+\r
+    virtual bool isConnected( QNEPort* other ) = 0;\r
+    inline int type( ) const\r
       { return( this->Type ); }\r
 \r
   protected:\r
-    QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
-\r
-  private:\r
     QNEBlock* m_Block;\r
-    QString m_Name;\r
-    bool m_IsOutput;\r
+\r
+    QString            m_Name;\r
     QGraphicsTextItem* m_Label;\r
-    int m_Radius;\r
-    int m_Margin;\r
+    int                m_Radius;\r
+    int                m_Margin;\r
+    quint64            m_Ptr;\r
+  };\r
+\r
+  /**\r
+   */\r
+  class QNENamePort\r
+    : public QNEPort\r
+  {\r
+  public:\r
+    typedef QNENamePort Self;\r
+    typedef QNEPort     Superclass;\r
+\r
+    enum { Type = Superclass::Type + 1 };\r
+\r
+  public:\r
+    QNENamePort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
+    virtual ~QNENamePort( );\r
+\r
+    virtual void setName( const QString& n );\r
+\r
+    virtual bool isConnected( QNEPort* other );\r
+    inline int type( ) const\r
+      { return( this->Type ); }\r
+  };\r
+\r
+  /**\r
+   */\r
+  class QNETypePort\r
+    : public QNEPort\r
+  {\r
+  public:\r
+    typedef QNETypePort Self;\r
+    typedef QNEPort     Superclass;\r
+\r
+    enum { Type = Superclass::Type + 2 };\r
+\r
+  public:\r
+    QNETypePort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
+    virtual ~QNETypePort( );\r
+\r
+    virtual void setName( const QString& n );\r
+\r
+    virtual bool isConnected( QNEPort* other );\r
+    inline int type( ) const\r
+      { return( this->Type ); }\r
+  };\r
+\r
+  /**\r
+   */\r
+  class QNEInputPort\r
+    : public QNEPort\r
+  {\r
+  public:\r
+    typedef QNEInputPort Self;\r
+    typedef QNEPort      Superclass;\r
+\r
+    enum { Type = Superclass::Type + 3 };\r
+\r
+  public:\r
+    QNEInputPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
+    virtual ~QNEInputPort( );\r
+\r
+    virtual void setName( const QString& n );\r
+\r
+    virtual bool isConnected( QNEPort* other );\r
+    inline int type( ) const\r
+      { return( this->Type ); }\r
+\r
+    void setConnection( QNEConnection* c );\r
+    inline QNEConnection* connection( )\r
+      { return( this->m_Connection ); }\r
+    inline const QNEConnection* connection( ) const\r
+      { return( this->m_Connection ); }\r
+    inline bool hasConnection( ) const\r
+      { return( this->m_Connection != NULL ); }\r
+\r
+  protected:\r
+    QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
+\r
+  protected:\r
+    QNEConnection* m_Connection;\r
+  };\r
+\r
+  /**\r
+   */\r
+  class QNEOutputPort\r
+    : public QNEPort\r
+  {\r
+  public:\r
+    typedef QNEOutputPort Self;\r
+    typedef QNEPort       Superclass;\r
+\r
+    enum { Type = Superclass::Type + 4 };\r
+\r
+  public:\r
+    QNEOutputPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );\r
+    virtual ~QNEOutputPort( );\r
+\r
+    virtual void setName( const QString& n );\r
+\r
+    virtual bool isConnected( QNEPort* other );\r
+    inline int type( ) const\r
+      { return( this->Type ); }\r
+\r
+    inline QVector< QNEConnection* >& connections( )\r
+      { return( this->m_Connections ); }\r
+    inline const QVector< QNEConnection* >& connections( ) const\r
+      { return( this->m_Connections ); }\r
+\r
+  protected:\r
+    QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
+\r
+  protected:\r
     QVector< QNEConnection* > m_Connections;\r
-    int m_PortFlags;\r
-    quint64 m_Ptr;\r
   };\r
 \r
 } // ecapseman\r