From: Joel Holdsworth Date: Sun, 14 Oct 2012 14:46:43 +0000 (+0100) Subject: Moved Signal label layout to get_label_rect X-Git-Tag: pulseview-0.1.0~245 X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=3b258424833cc681b7f3a0571a00dcc42df6192f Moved Signal label layout to get_label_rect --- diff --git a/pv/signal.cpp b/pv/signal.cpp index 282d272b..1a11cfee 100644 --- a/pv/signal.cpp +++ b/pv/signal.cpp @@ -36,25 +36,29 @@ QString Signal::get_name() const return _name; } -void Signal::paint_label(QPainter &p, const QRect &rect) +QRectF Signal::get_label_rect(QPainter &p, const QRect &rect) { - p.setBrush(get_colour()); - - const QString text(_name); - const QColor colour = get_colour(); - const QSizeF text_size = p.boundingRect( - QRectF(0, 0, rect.width(), 0), 0, text).size(); + QRectF(0, 0, rect.width(), 0), 0, _name).size(); const float nominal_offset = get_nominal_offset(rect); const QSizeF label_size( text_size.width() + LabelPadding.width() * 2, text_size.height() + LabelPadding.height() * 2); const float label_arrow_length = label_size.height() / 2; - const QRectF label_rect( + return QRectF( rect.right() - label_arrow_length - label_size.width(), nominal_offset - label_size.height() / 2, label_size.width(), label_size.height()); +} + +void Signal::paint_label(QPainter &p, const QRect &rect) +{ + 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); // Paint the label const QPointF points[] = { @@ -87,7 +91,7 @@ void Signal::paint_label(QPainter &p, const QRect &rect) // Paint the text p.setPen((colour.lightness() > 64) ? Qt::black : Qt::white); - p.drawText(label_rect, Qt::AlignCenter | Qt::AlignVCenter, text); + p.drawText(label_rect, Qt::AlignCenter | Qt::AlignVCenter, _name); } } // namespace pv diff --git a/pv/signal.h b/pv/signal.h index 2351a2f9..1b2f5df9 100644 --- a/pv/signal.h +++ b/pv/signal.h @@ -52,6 +52,14 @@ public: virtual void paint(QPainter &p, const QRect &rect, double scale, double offset) = 0; + /** + * Computes the outline rectangle of a label. + * @param p the QPainter to lay out text with. + * @param rect The rectangle of the signal header. + * @return Returns the rectangle of the signal label. + */ + virtual QRectF get_label_rect(QPainter &p, const QRect &rect); + /** * Paints the signal label into a QGLWidget. * @param p the QPainter to paint into.