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
18 this->setFlag( QGraphicsItem::ItemIsSelectable );
\r
21 // -------------------------------------------------------------------------
\r
22 cpPipelineEditor::Connection::
\r
25 if( this->m_Port1 != NULL )
\r
26 this->m_Port1->connections( ).
\r
27 remove( this->m_Port1->connections( ).indexOf( this ) );
\r
29 if( this->m_Port2 != NULL )
\r
30 this->m_Port2->setConnection( NULL );
\r
33 // -------------------------------------------------------------------------
\r
34 void cpPipelineEditor::Connection::
\r
35 setPos1( const QPointF& p )
\r
40 // -------------------------------------------------------------------------
\r
41 void cpPipelineEditor::Connection::
\r
42 setPos2( const QPointF& p )
\r
47 // -------------------------------------------------------------------------
\r
48 void cpPipelineEditor::Connection::
\r
49 setPort1( OutputPort* p )
\r
53 p->connections( ).append( this );
\r
59 // -------------------------------------------------------------------------
\r
60 void cpPipelineEditor::Connection::
\r
61 setPort2( InputPort* p )
\r
65 if( p->connection( ) == NULL )
\r
67 p->setConnection( this );
\r
75 // -------------------------------------------------------------------------
\r
76 void cpPipelineEditor::Connection::
\r
77 updatePosFromPorts( )
\r
79 if( this->m_Port1 != NULL )
\r
81 this->m_Port1->scenePos( ) +
\r
82 QPointF( this->m_Port1->radius( ), this->m_Port1->radius( ) );
\r
83 if( this->m_Port2 != NULL )
\r
85 this->m_Port2->scenePos( ) +
\r
86 QPointF( this->m_Port2->radius( ), this->m_Port2->radius( ) );
\r
89 // -------------------------------------------------------------------------
\r
90 void cpPipelineEditor::Connection::
\r
94 p.moveTo( this->m_Pos1 );
\r
96 qreal dx = this->m_Pos2.x( ) - this->m_Pos1.x( );
\r
97 qreal dy = this->m_Pos2.y( ) - this->m_Pos1.y( );
\r
98 QPointF c1( this->m_Pos1.x( ) + dx * 0.25, this->m_Pos1.y( ) + dy * 0.1 );
\r
99 QPointF c2( this->m_Pos1.x( ) + dx * 0.75, this->m_Pos1.y( ) + dy * 0.9 );
\r
100 p.cubicTo( c1, c2, this->m_Pos2 );
\r
102 this->setPath( p );
\r
105 // -------------------------------------------------------------------------
\r
106 cpPipelineEditor::OutputPort* cpPipelineEditor::Connection::
\r
109 return( this->m_Port1 );
\r
112 // -------------------------------------------------------------------------
\r
113 cpPipelineEditor::InputPort* cpPipelineEditor::Connection::
\r
116 return( this->m_Port2 );
\r
119 #include <QPainter>
\r
121 // -------------------------------------------------------------------------
\r
122 void cpPipelineEditor::Connection::
\r
125 const QStyleOptionGraphicsItem* option,
\r
129 Q_UNUSED( option );
\r
130 Q_UNUSED( widget );
\r
132 if( this->isSelected( ) )
\r
133 painter->setPen( QPen( Qt::red, 5 ) );
\r
135 painter->setPen( QPen( Qt::black, 2 ) );
\r
136 this->setBrush( Qt::NoBrush );
\r
137 painter->drawPath( this->path( ) );
\r