X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fdecodetrace.cpp;h=7ed66b3e12c351d7cae7763cd3f3b4710c913a18;hp=0fbd16fd22b5e636a6b71d1ef3c27cea3d01fe40;hb=3eb29afdb641606c2e2e059289d8cc103d027a25;hpb=d64796ed321a9c755e7426be47359aeca1d1173c diff --git a/pv/view/decodetrace.cpp b/pv/view/decodetrace.cpp index 0fbd16f..7ed66b3 100644 --- a/pv/view/decodetrace.cpp +++ b/pv/view/decodetrace.cpp @@ -166,13 +166,13 @@ pair DecodeTrace::v_extents() const return make_pair(-row_height / 2, row_height * 7 / 2); } -void DecodeTrace::paint_back(QPainter &p, int left, int right) +void DecodeTrace::paint_back(QPainter &p, const RowItemPaintParams &pp) { - Trace::paint_back(p, left, right); - paint_axis(p, get_visual_y(), left, right); + Trace::paint_back(p, pp); + paint_axis(p, get_visual_y(), pp.left(), pp.right()); } -void DecodeTrace::paint_mid(QPainter &p, int left, int right) +void DecodeTrace::paint_mid(QPainter &p, const RowItemPaintParams &pp) { using namespace pv::data::decode; @@ -185,14 +185,16 @@ void DecodeTrace::paint_mid(QPainter &p, int left, int right) const QString err = decoder_stack_->error_message(); if (!err.isEmpty()) { - draw_unresolved_period(p, annotation_height, left, right); - draw_error(p, err, left, right); + draw_unresolved_period( + p, annotation_height, pp.left(), pp.right()); + draw_error(p, err, pp); return; } // Iterate through the rows int y = get_visual_y(); - pair sample_range = get_sample_range(left, right); + pair sample_range = get_sample_range( + pp.left(), pp.right()); assert(decoder_stack_); const vector rows(decoder_stack_->get_visible_rows()); @@ -214,8 +216,7 @@ void DecodeTrace::paint_mid(QPainter &p, int left, int right) if (!annotations.empty()) { for (const Annotation &a : annotations) draw_annotation(a, p, get_text_colour(), - annotation_height, left, right, y, - base_colour); + annotation_height, pp, y, base_colour); y += row_height_; visible_rows_.push_back(rows[i]); @@ -223,15 +224,13 @@ void DecodeTrace::paint_mid(QPainter &p, int left, int right) } // Draw the hatching - draw_unresolved_period(p, annotation_height, left, right); + draw_unresolved_period(p, annotation_height, pp.left(), pp.right()); } -void DecodeTrace::paint_fore(QPainter &p, int left, int right) +void DecodeTrace::paint_fore(QPainter &p, const RowItemPaintParams &pp) { using namespace pv::data::decode; - (void)right; - assert(row_height_); for (size_t i = 0; i < visible_rows_.size(); i++) @@ -244,15 +243,15 @@ void DecodeTrace::paint_fore(QPainter &p, int left, int right) if (i != 0) { const QPointF points[] = { - QPointF(left, y - ArrowSize), - QPointF(left + ArrowSize, y), - QPointF(left, y + ArrowSize) + QPointF(pp.left(), y - ArrowSize), + QPointF(pp.left() + ArrowSize, y), + QPointF(pp.left(), y + ArrowSize) }; p.drawPolygon(points, countof(points)); } - const QRect r(left + ArrowSize * 2, y - row_height_ / 2, - right - left, row_height_); + const QRect r(pp.left() + ArrowSize * 2, y - row_height_ / 2, + pp.right() - pp.left(), row_height_); const QString h(visible_rows_[i].title()); const int f = Qt::AlignLeft | Qt::AlignVCenter | Qt::TextDontClip; @@ -337,7 +336,7 @@ QMenu* DecodeTrace::create_context_menu(QWidget *parent) } void DecodeTrace::draw_annotation(const pv::data::decode::Annotation &a, - QPainter &p, QColor text_color, int h, int left, int right, int y, + QPainter &p, QColor text_color, int h, const RowItemPaintParams &pp, int y, size_t base_colour) const { double samples_per_pixel, pixels_offset; @@ -353,7 +352,7 @@ void DecodeTrace::draw_annotation(const pv::data::decode::Annotation &a, const QColor &fill = Colours[colour]; const QColor &outline = OutlineColours[colour]; - if (start > right + DrawPadding || end < left - DrawPadding) + if (start > pp.right() + DrawPadding || end < pp.left() - DrawPadding) return; if (a.start_sample() == a.end_sample()) @@ -441,7 +440,7 @@ void DecodeTrace::draw_range(const pv::data::decode::Annotation &a, QPainter &p, } void DecodeTrace::draw_error(QPainter &p, const QString &message, - int left, int right) + const RowItemPaintParams &pp) { const int y = get_visual_y(); @@ -449,7 +448,7 @@ void DecodeTrace::draw_error(QPainter &p, const QString &message, p.setBrush(ErrorBgColour); const QRectF bounding_rect = - QRectF(left, INT_MIN / 2 + y, right - left, INT_MAX); + QRectF(pp.width(), INT_MIN / 2 + y, pp.width(), INT_MAX); const QRectF text_rect = p.boundingRect(bounding_rect, Qt::AlignCenter, message); const float r = text_rect.height() / 4;