diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-04-21 22:53:05 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-04-21 22:53:05 +0200 |
commit | b00c5250d7a56b6d20980d89cf331a114fdfdee0 (patch) | |
tree | 5fef5c2a534cf150f9ae57cd20a90d6789bd3789 /src/gui/edgeitem.cpp | |
parent | 9dd19037afd93d879ec32c5191314196f7f50592 (diff) |
edge styles 90 percent
Diffstat (limited to 'src/gui/edgeitem.cpp')
-rw-r--r-- | src/gui/edgeitem.cpp | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/src/gui/edgeitem.cpp b/src/gui/edgeitem.cpp index 88a4e85..de51db3 100644 --- a/src/gui/edgeitem.cpp +++ b/src/gui/edgeitem.cpp @@ -50,12 +50,61 @@ void EdgeItem::readPos() void EdgeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { //QGraphicsPathItem::paint(painter, option, widget); - QPen pen(Qt::black); - pen.setWidth(2); - painter->setPen(pen); + QPen pen = _edge->style()->pen(); + painter->setPen(pen); painter->setBrush(Qt::NoBrush); painter->drawPath(path()); + QPointF ht = _edge->headTangent(); + QPointF hLeft(-ht.y(), ht.x()); + QPointF hRight(ht.y(), -ht.x()); + QPointF tt = _edge->tailTangent(); + QPointF tLeft(-ht.y(), ht.x()); + QPointF tRight(ht.y(), -ht.x()); + + pen.setStyle(Qt::SolidLine); + painter->setPen(pen); + + + + switch (_edge->style()->arrowHead()) { + case EdgeStyle::Flat: + { + painter->drawLine( + toScreen(_edge->head() + hLeft), + toScreen(_edge->head() + hRight)); + break; + } + case EdgeStyle::Pointer: + { + QPainterPath pth; + pth.moveTo(toScreen(_edge->head() + ht + hLeft)); + pth.lineTo(toScreen(_edge->head())); + pth.lineTo(toScreen(_edge->head() + ht + hRight)); + painter->drawPath(pth); + break; + } + } + + switch (_edge->style()->arrowTail()) { + case EdgeStyle::Flat: + { + painter->drawLine( + toScreen(_edge->tail() + tLeft), + toScreen(_edge->tail() + tRight)); + break; + } + case EdgeStyle::Pointer: + { + QPainterPath pth; + pth.moveTo(toScreen(_edge->tail() + tt + tLeft)); + pth.lineTo(toScreen(_edge->tail())); + pth.lineTo(toScreen(_edge->tail() + tt + tRight)); + painter->drawPath(pth); + break; + } + } + if (isSelected()) { QColor draw; QColor draw1; @@ -151,3 +200,4 @@ void EdgeItem::setPath(const QPainterPath &path) update(); } + |