]> sigrok.org Git - pulseview.git/commitdiff
Added CursorPair::get_cursor_offsets()
authorJoel Holdsworth <redacted>
Sat, 20 Apr 2013 12:01:03 +0000 (13:01 +0100)
committerJoel Holdsworth <redacted>
Sat, 20 Apr 2013 12:03:34 +0000 (13:03 +0100)
pv/view/cursor.cpp
pv/view/cursorpair.cpp
pv/view/cursorpair.h

index 855bfa01a7fbc47a0a78d00e6309e835401048e7..809a0501b20da1a4be759451fb0d51b717a4dff6 100644 (file)
@@ -58,9 +58,15 @@ QRectF Cursor::get_label_rect(const QRect &rect) const
        const QSizeF label_size(
                _text_size.width() + View::LabelPadding.width() * 2,
                _text_size.height() + View::LabelPadding.height() * 2);
-       return QRectF(x - label_size.width() / 2 - 0.5f,
-               rect.height() - label_size.height() - Offset - ArrowSize - 0.5f,
-               label_size.width() + 1, label_size.height() + 1);
+       const float top = rect.height() - label_size.height() -
+               Cursor::Offset - Cursor::ArrowSize - 0.5f;
+       const float height = label_size.height() + 1;
+
+       if (_time > _other.time())
+               return QRectF(x, top, label_size.width(), height);
+       else
+               return QRectF(x - label_size.width(), top,
+                       label_size.width(), height);
 }
 
 void Cursor::paint_label(QPainter &p, const QRect &rect,
index feac91d20d47a513c60f0a294c97b4f4fbda65cb..5ce398a0ff3f764e9b0e6d6914bf9f258254bce0 100644 (file)
@@ -69,10 +69,11 @@ void CursorPair::draw_viewport_background(QPainter &p,
        p.setPen(Qt::NoPen);
        p.setBrush(QBrush(View::CursorAreaColour));
 
-       const float x1 = (_first.time() - _view.offset()) / _view.scale();
-       const float x2 = (_second.time() - _view.offset()) / _view.scale();
-       const int l = (int)max(min(x1, x2), 0.0f);
-       const int r = (int)min(max(x1, x2), (float)rect.width());
+       const pair<float, float> offsets(get_cursor_offsets());
+       const int l = (int)max(min(
+               offsets.first, offsets.second), 0.0f);
+       const int r = (int)min(max(
+               offsets.first, offsets.second), (float)rect.width());
 
        p.drawRect(l, 0, r - l, rect.height());
 }
@@ -84,5 +85,12 @@ void CursorPair::draw_viewport_foreground(QPainter &p,
        _second.paint(p, rect);
 }
 
+pair<float, float> CursorPair::get_cursor_offsets() const
+{
+       return pair<float, float>(
+               (_first.time() - _view.offset()) / _view.scale(),
+               (_second.time() - _view.offset()) / _view.scale());
+}
+
 } // namespace view
 } // namespace pv
index 05035cc26385560af3c80f8c8e2771e0f05a9f41..b152b8083a2db4ff0db7932569e7ae08c836abc3 100644 (file)
@@ -67,6 +67,8 @@ public:
 
        void draw_viewport_foreground(QPainter &p, const QRect &rect);
 
+       std::pair<float, float> get_cursor_offsets() const;
+
 private:
        Cursor _first, _second;
        const View &_view;