X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Ftrace.cpp;h=f23de2ff50b33cb2771468584b8b4c5051bf3fab;hp=464cadcde2ede54aaa6b4c8e0f3fcae9a1308e9f;hb=1db1bdd6079178e218b3b1b0bd3e30efdf3e1690;hpb=37fd11b167b2c258610b629bc4e17fc158b13a48 diff --git a/pv/view/trace.cpp b/pv/view/trace.cpp index 464cadc..f23de2f 100644 --- a/pv/view/trace.cpp +++ b/pv/view/trace.cpp @@ -23,7 +23,9 @@ #include #include +#include #include +#include #include #include "trace.h" @@ -31,6 +33,7 @@ #include "view.h" #include +#include namespace pv { namespace view { @@ -38,8 +41,7 @@ namespace view { const QPen Trace::AxisPen(QColor(128, 128, 128, 64)); const int Trace::LabelHitPadding = 2; -Trace::Trace(pv::SigSession &session, QString name) : - _session(session), +Trace::Trace(QString name) : _name(name), _v_offset(0), _popup(NULL), @@ -116,7 +118,6 @@ void Trace::paint_label(QPainter &p, int right, bool hover) const QColor colour = get_colour(); - compute_text_size(p); const QRectF label_rect = get_label_rect(right); // Paint the label @@ -156,6 +157,7 @@ void Trace::paint_label(QPainter &p, int right, bool hover) // Paint the text p.setPen(get_text_colour()); + p.setFont(QApplication::font()); p.drawText(label_rect, Qt::AlignCenter | Qt::AlignVCenter, _name); } @@ -164,7 +166,7 @@ bool Trace::pt_in_label_rect(int left, int right, const QPoint &point) (void)left; const QRectF label = get_label_rect(right); - return QRectF( + return enabled() && QRectF( QPointF(label.left() - LabelHitPadding, label.top() - LabelHitPadding), QPointF(right, label.bottom() + LabelHitPadding) @@ -197,6 +199,26 @@ int Trace::get_y() const return _v_offset - _view->v_offset(); } +QRectF Trace::get_label_rect(int right) +{ + using pv::view::View; + + assert(_view); + + QFontMetrics m(QApplication::font()); + const QSize text_size( + m.boundingRect(QRect(), 0, _name).width(), + m.boundingRect(QRect(), 0, "Tg").height()); + const QSizeF label_size( + text_size.width() + View::LabelPadding.width() * 2, + ceilf((text_size.height() + View::LabelPadding.height() * 2) / 2) * 2); + const float label_arrow_length = label_size.height() / 2; + return QRectF( + right - label_arrow_length - label_size.width() - 0.5, + get_y() + 0.5f - label_size.height() / 2, + label_size.width(), label_size.height()); +} + QColor Trace::get_text_colour() const { return (_colour.lightness() > 64) ? Qt::black : Qt::white; @@ -249,29 +271,6 @@ void Trace::populate_popup_form(QWidget *parent, QFormLayout *form) add_colour_option(parent, form); } -void Trace::compute_text_size(QPainter &p) -{ - _text_size = QSize( - p.boundingRect(QRectF(), 0, _name).width(), - p.boundingRect(QRectF(), 0, "Tg").height()); -} - -QRectF Trace::get_label_rect(int right) -{ - using pv::view::View; - - assert(_view); - - const QSizeF label_size( - _text_size.width() + View::LabelPadding.width() * 2, - ceilf((_text_size.height() + View::LabelPadding.height() * 2) / 2) * 2); - const float label_arrow_length = label_size.height() / 2; - return QRectF( - right - label_arrow_length - label_size.width() - 0.5, - get_y() + 0.5f - label_size.height() / 2, - label_size.width(), label_size.height()); -} - void Trace::on_popup_closed() { _popup = NULL;