| 
							- /*
 -  * Patchbay Canvas engine using QGraphicsView/Scene
 -  * Copyright (C) 2010-2012 Filipe Coelho <falktx@gmail.com>
 -  *
 -  * This program is free software; you can redistribute it and/or modify
 -  * it under the terms of the GNU General Public License as published by
 -  * the Free Software Foundation; either version 2 of the License, or
 -  * any later version.
 -  *
 -  * This program is distributed in the hope that it will be useful,
 -  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 -  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 -  * GNU General Public License for more details.
 -  *
 -  * For a full copy of the GNU General Public License see the COPYING file
 -  */
 - 
 - #include "canvasbezierlinemov.h"
 - 
 - #include <QtGui/QPainter>
 - 
 - #include "canvasport.h"
 - 
 - START_NAMESPACE_PATCHCANVAS
 - 
 - CanvasBezierLineMov::CanvasBezierLineMov(PortMode port_mode, PortType port_type, QGraphicsItem* parent) :
 -     QGraphicsPathItem(parent, canvas.scene)
 - {
 -     m_port_mode = port_mode;
 -     m_port_type = port_type;
 - 
 -     // Port position doesn't change while moving around line
 -     p_itemX = scenePos().x();
 -     p_itemY = scenePos().y();
 -     p_width = ((CanvasPort*)parentItem())->getPortWidth();
 - 
 -     QPen pen;
 - 
 -     if (port_type == PORT_TYPE_AUDIO_JACK)
 -         pen = QPen(canvas.theme->line_audio_jack, 2);
 -     else if (port_type == PORT_TYPE_MIDI_JACK)
 -         pen = QPen(canvas.theme->line_midi_jack, 2);
 -     else if (port_type == PORT_TYPE_MIDI_A2J)
 -         pen = QPen(canvas.theme->line_midi_a2j, 2);
 -     else if (port_type == PORT_TYPE_MIDI_ALSA)
 -         pen = QPen(canvas.theme->line_midi_alsa, 2);
 -     else
 -     {
 -         qWarning("PatchCanvas::CanvasBezierLineMov(%s, %s, %p) - invalid port type", port_mode2str(port_mode), port_type2str(port_type), parent);
 -         pen = QPen(Qt::black);
 -     }
 - 
 -     QColor color(0,0,0,0);
 -     setBrush(color);
 -     setPen(pen);
 - }
 - 
 - void CanvasBezierLineMov::deleteFromScene()
 - {
 -     canvas.scene->removeItem(this);
 -     delete this;
 - }
 - 
 - void CanvasBezierLineMov::updateLinePos(QPointF scenePos)
 - {
 -     int old_x, old_y, mid_x, new_x, final_x, final_y;
 - 
 -     if (m_port_mode == PORT_MODE_INPUT)
 -     {
 -         old_x = 0;
 -         old_y = 7.5;
 -         mid_x = abs(scenePos.x()-p_itemX)/2;
 -         new_x = old_x-mid_x;
 -     }
 -     else if (m_port_mode == PORT_MODE_OUTPUT)
 -     {
 -         old_x = p_width+12;
 -         old_y = 7.5;
 -         mid_x = abs(scenePos.x()-(p_itemX+old_x))/2;
 -         new_x = old_x+mid_x;
 -     }
 -     else
 -         return;
 - 
 -     final_x = scenePos.x()-p_itemX;
 -     final_y = scenePos.y()-p_itemY;
 - 
 -     QPainterPath path(QPointF(old_x, old_y));
 -     path.cubicTo(new_x, old_y, new_x, final_y, final_x, final_y);
 -     setPath(path);
 - }
 - 
 - int CanvasBezierLineMov::type() const
 - {
 -     return CanvasBezierLineMovType;
 - }
 - 
 - void CanvasBezierLineMov::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
 - {
 -     painter->setRenderHint(QPainter::Antialiasing, bool(options.antialiasing));
 -     QGraphicsPathItem::paint(painter, option, widget);
 - }
 - 
 - END_NAMESPACE_PATCHCANVAS
 
 
  |