Chris@46: Chris@46: Chris@46: #include "connectionitem.h" Chris@46: Chris@46: #include "changesetitem.h" Chris@46: Chris@46: #include Chris@46: Chris@46: QRectF Chris@46: ConnectionItem::boundingRect() const Chris@46: { Chris@46: if (!m_parent || !m_child) return QRectF(); Chris@46: float scale = 100; Chris@46: float size = 50; Chris@46: return QRectF(scale * m_child->column() + size/2 - 2, Chris@46: scale * m_child->row() + size - 2, Chris@46: scale * m_parent->column() - scale * m_child->column() + 4, Chris@46: scale * m_parent->row() - scale * m_child->row() - size + 4) Chris@46: .normalized(); Chris@46: } Chris@46: Chris@46: void Chris@46: ConnectionItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *, QWidget *) Chris@46: { Chris@46: QPainterPath p; Chris@46: float scale = 100; Chris@46: float size = 50; Chris@46: p.moveTo(scale * m_child->column() + size/2, Chris@46: scale * m_child->row() + size); Chris@46: if (m_parent->column() == m_child->column()) { Chris@46: p.lineTo(scale * m_parent->column() + size/2, Chris@46: scale * m_parent->row()); Chris@46: } else { Chris@46: p.cubicTo(scale * m_child->column() + size/2, Chris@46: scale * m_child->row() + size + size, Chris@46: scale * m_parent->column() + size/2, Chris@46: scale * m_child->row() + size, Chris@46: scale * m_parent->column() + size/2, Chris@46: scale * m_child->row() + scale); Chris@46: if (abs(m_parent->row() - m_child->row()) > 1) { Chris@46: p.lineTo(scale * m_parent->column() + size/2, Chris@46: scale * m_parent->row()); Chris@46: } Chris@46: } Chris@46: paint->drawPath(p); Chris@46: } Chris@46: Chris@46: