X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsignal.cpp;h=c23a3954455b155d74b042907c361fa245f18c3a;hp=7d3dd66362f4c5ab182b4503ab2e0294d5f93066;hb=2e04f9bdf11fa7191965fcad052e4cbc474494f8;hpb=a29bb7fb6aa3665c21da1e06a3d3c4ca80f4437f diff --git a/pv/signal.cpp b/pv/signal.cpp index 7d3dd663..c23a3954 100644 --- a/pv/signal.cpp +++ b/pv/signal.cpp @@ -24,7 +24,6 @@ namespace pv { -const QSizeF Signal::LabelPadding(4, 0); const int Signal::LabelHitPadding = 2; Signal::Signal(QString name) : @@ -37,13 +36,20 @@ QString Signal::get_name() const return _name; } +void Signal::set_name(QString name) +{ + _name = name; +} + void Signal::paint_label(QPainter &p, const QRect &rect, bool hover) { p.setBrush(get_colour()); const QColor colour = get_colour(); const float nominal_offset = get_nominal_offset(rect); - const QRectF label_rect = get_label_rect(p, rect); + + compute_text_size(p); + const QRectF label_rect = get_label_rect(rect); // Paint the label const QPointF points[] = { @@ -79,10 +85,9 @@ void Signal::paint_label(QPainter &p, const QRect &rect, bool hover) p.drawText(label_rect, Qt::AlignCenter | Qt::AlignVCenter, _name); } -bool Signal::pt_in_label_rect(QPainter &p, - const QRect &rect, const QPoint &point) +bool Signal::pt_in_label_rect(const QRect &rect, const QPoint &point) { - const QRectF label = get_label_rect(p, rect); + const QRectF label = get_label_rect(rect); return QRectF( QPointF(label.left() - LabelHitPadding, label.top() - LabelHitPadding), @@ -91,15 +96,19 @@ bool Signal::pt_in_label_rect(QPainter &p, ).contains(point); } -QRectF Signal::get_label_rect(QPainter &p, const QRect &rect) +void Signal::compute_text_size(QPainter &p) +{ + _text_size = p.boundingRect(QRectF(), 0, _name).size(); +} + +QRectF Signal::get_label_rect(const QRect &rect) { - const QSizeF text_size = p.boundingRect( - QRectF(0, 0, rect.width(), 0), 0, _name).size(); + using pv::view::View; const float nominal_offset = get_nominal_offset(rect); const QSizeF label_size( - text_size.width() + LabelPadding.width() * 2, - text_size.height() + LabelPadding.height() * 2); + _text_size.width() + View::LabelPadding.width() * 2, + _text_size.height() + View::LabelPadding.height() * 2); const float label_arrow_length = label_size.height() / 2; return QRectF( rect.right() - label_arrow_length - label_size.width(),