X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fcursor.cpp;h=855bfa01a7fbc47a0a78d00e6309e835401048e7;hb=96d3ad83edb89b2d4e0e4a4f0860c13ebbcf737a;hp=1ec3b37a9948cf31d4d492c2af80973685d615b9;hpb=50b53260403749627e75892873f8828f44f4b85d;p=pulseview.git diff --git a/pv/view/cursor.cpp b/pv/view/cursor.cpp index 1ec3b37..855bfa0 100644 --- a/pv/view/cursor.cpp +++ b/pv/view/cursor.cpp @@ -45,8 +45,9 @@ const int Cursor::Offset = 1; const int Cursor::ArrowSize = 4; -Cursor::Cursor(const View &view, double time) : - TimeMarker(view, LineColour, time) +Cursor::Cursor(const View &view, double time, Cursor &other) : + TimeMarker(view, LineColour, time), + _other(other) { } @@ -68,38 +69,66 @@ void Cursor::paint_label(QPainter &p, const QRect &rect, compute_text_size(p, prefix); const QRectF r(get_label_rect(rect)); - const float h_centre = (r.left() + r.right()) / 2; - const QPointF points[] = { - r.topRight(), - QPointF(r.right(), r.bottom()), - QPointF(h_centre + ArrowSize, r.bottom()), - QPointF(h_centre, rect.bottom()), - QPointF(h_centre - ArrowSize, r.bottom()), - QPointF(r.left(), r.bottom()), - r.topLeft() - }; - - const QPointF highlight_points[] = { - QPointF(r.right() - 1, r.top() + 1), - QPointF(r.right() - 1, r.bottom() - 1), - QPointF(h_centre + ArrowSize - 1, r.bottom() - 1), - QPointF(h_centre, rect.bottom() - 1), - QPointF(h_centre - ArrowSize + 1, r.bottom() - 1), - QPointF(r.left() + 1, r.bottom() - 1), - QPointF(r.left() + 1, r.top() + 1), - }; - - p.setPen(Qt::transparent); - p.setBrush(FillColour); - p.drawPolygon(points, countof(points)); - - p.setPen(HighlightColour); - p.setBrush(Qt::transparent); - p.drawPolygon(highlight_points, countof(highlight_points)); - - p.setPen(LineColour); - p.setBrush(Qt::transparent); - p.drawPolygon(points, countof(points)); + if (_time > _other.time()) + { + const QPointF points[] = { + r.topLeft(), + r.topRight(), + r.bottomRight(), + QPointF(r.left() + ArrowSize, r.bottom()), + QPointF(r.left(), rect.bottom()), + }; + + const QPointF highlight_points[] = { + QPointF(r.left() + 1, r.top() + 1), + QPointF(r.right() - 1, r.top() + 1), + QPointF(r.right() - 1, r.bottom() - 1), + QPointF(r.left() + ArrowSize - 1, r.bottom() - 1), + QPointF(r.left() + 1, rect.bottom() - 1), + }; + + p.setPen(Qt::transparent); + p.setBrush(FillColour); + p.drawPolygon(points, countof(points)); + + p.setPen(HighlightColour); + p.setBrush(Qt::transparent); + p.drawPolygon(highlight_points, countof(highlight_points)); + + p.setPen(LineColour); + p.setBrush(Qt::transparent); + p.drawPolygon(points, countof(points)); + } + else + { + const QPointF points[] = { + r.topRight(), + r.topLeft(), + r.bottomLeft(), + QPointF(r.right() - ArrowSize, r.bottom()), + QPointF(r.right(), rect.bottom()), + }; + + const QPointF highlight_points[] = { + QPointF(r.right() - 1, r.top() + 1), + QPointF(r.left() + 1, r.top() + 1), + QPointF(r.left() + 1, r.bottom() - 1), + QPointF(r.right() - ArrowSize + 1, r.bottom() - 1), + QPointF(r.right() - 1, rect.bottom() - 1), + }; + + p.setPen(Qt::transparent); + p.setBrush(FillColour); + p.drawPolygon(points, countof(points)); + + p.setPen(HighlightColour); + p.setBrush(Qt::transparent); + p.drawPolygon(highlight_points, countof(highlight_points)); + + p.setPen(LineColour); + p.setBrush(Qt::transparent); + p.drawPolygon(points, countof(points)); + } p.setPen(TextColour); p.drawText(r, Qt::AlignCenter | Qt::AlignVCenter,