| 723 | } |
| 724 | |
| 725 | void |
| 726 | Edge::dragDest(const QPointF & dst) |
| 727 | { |
| 728 | setLine( QLineF( dst, line().p2() ) ); |
| 729 | |
| 730 | double a = std::acos( line().dx() / std::max( EDGE_LENGTH_MIN, line().length() ) ); |
| 731 | if (line().dy() < 0) { |
| 732 | a = 2 * M_PI - a; |
| 733 | } |
| 734 | |
| 735 | double arrowSize = TO_DPIX(ARROW_SIZE_DISCONNECTED); |
| 736 | QPointF arrowP1 = line().p1() + QPointF(std::cos(a + ARROW_HEAD_ANGLE / 2) * arrowSize, |
| 737 | std::sin(a + ARROW_HEAD_ANGLE / 2) * arrowSize); |
| 738 | QPointF arrowP2 = line().p1() + QPointF(std::cos(a - ARROW_HEAD_ANGLE / 2) * arrowSize, |
| 739 | std::sin(a - ARROW_HEAD_ANGLE / 2) * arrowSize); |
| 740 | _imp->arrowHead.clear(); |
| 741 | _imp->arrowHead << line().p1() << arrowP1 << arrowP2; |
| 742 | } |
| 743 | |
| 744 | void |
| 745 | Edge::setBendPointVisible(bool visible) |