1 #include "Connection.h"
\r
6 #include <QGraphicsScene>
\r
8 // -------------------------------------------------------------------------
\r
9 cpPipelineEditor::Connection::
\r
10 Connection( QGraphicsItem* parent, QGraphicsScene* scene )
\r
11 : Superclass( parent, scene )
\r
13 this->setPen( QPen( Qt::black, 2 ) );
\r
14 this->setBrush( Qt::NoBrush );
\r
15 this->setZValue( -1 );
\r
16 this->m_Port1 = NULL;
\r
17 this->m_Port2 = NULL;
\r
20 // -------------------------------------------------------------------------
\r
21 cpPipelineEditor::Connection::
\r
24 if( this->m_Port1 != NULL )
\r
25 this->m_Port1->connections( ).
\r
26 remove( this->m_Port1->connections( ).indexOf( this ) );
\r
28 if( this->m_Port2 != NULL )
\r
29 this->m_Port2->setConnection( NULL );
\r
32 // -------------------------------------------------------------------------
\r
33 void cpPipelineEditor::Connection::
\r
34 setPos1( const QPointF& p )
\r
39 // -------------------------------------------------------------------------
\r
40 void cpPipelineEditor::Connection::
\r
41 setPos2( const QPointF& p )
\r
46 // -------------------------------------------------------------------------
\r
47 void cpPipelineEditor::Connection::
\r
48 setPort1( OutputPort* p )
\r
52 p->connections( ).append( this );
\r
58 // -------------------------------------------------------------------------
\r
59 void cpPipelineEditor::Connection::
\r
60 setPort2( InputPort* p )
\r
64 if( p->connection( ) == NULL )
\r
66 p->setConnection( this );
\r
74 // -------------------------------------------------------------------------
\r
75 void cpPipelineEditor::Connection::
\r
76 updatePosFromPorts( )
\r
78 if( this->m_Port1 != NULL )
\r
80 this->m_Port1->scenePos( ) +
\r
81 QPointF( this->m_Port1->radius( ), this->m_Port1->radius( ) );
\r
82 if( this->m_Port2 != NULL )
\r
84 this->m_Port2->scenePos( ) +
\r
85 QPointF( this->m_Port2->radius( ), this->m_Port2->radius( ) );
\r
88 // -------------------------------------------------------------------------
\r
89 void cpPipelineEditor::Connection::
\r
93 p.moveTo( this->m_Pos1 );
\r
95 qreal dx = this->m_Pos2.x( ) - this->m_Pos1.x( );
\r
96 qreal dy = this->m_Pos2.y( ) - this->m_Pos1.y( );
\r
97 QPointF c1( this->m_Pos1.x( ) + dx * 0.25, this->m_Pos1.y( ) + dy * 0.1 );
\r
98 QPointF c2( this->m_Pos1.x( ) + dx * 0.75, this->m_Pos1.y( ) + dy * 0.9 );
\r
99 p.cubicTo( c1, c2, this->m_Pos2 );
\r
101 this->setPath( p );
\r
104 // -------------------------------------------------------------------------
\r
105 cpPipelineEditor::OutputPort* cpPipelineEditor::Connection::
\r
108 return( this->m_Port1 );
\r
111 // -------------------------------------------------------------------------
\r
112 cpPipelineEditor::InputPort* cpPipelineEditor::Connection::
\r
115 return( this->m_Port2 );
\r