]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/trace.cpp
View: Fixes related to multi-segment display
[pulseview.git] / pv / views / trace / trace.cpp
index 774351c6ea91c53b60f3e803c36cf71a7925b99b..91fde4725cbbf6f142644174a7e1103be26ff5fa 100644 (file)
@@ -50,6 +50,9 @@ const QColor Trace::DarkGrayBGColour = QColor(0, 0, 0, 15 * 255 / 100);
 
 Trace::Trace(shared_ptr<data::SignalBase> channel) :
        base_(channel),
+       axis_pen_(AxisPen),
+       segment_display_mode_(ShowLastSegmentOnly),  // Will be overwritten by View
+       current_segment_(0),
        popup_(nullptr),
        popup_form_(nullptr)
 {
@@ -159,6 +162,16 @@ QRectF Trace::label_rect(const QRectF &rect) const
                label_size.height());
 }
 
+void Trace::set_current_segment(const int segment)
+{
+       current_segment_ = segment;
+}
+
+int Trace::get_current_segment() const
+{
+       return current_segment_;
+}
+
 void Trace::paint_back(QPainter &p, ViewItemPaintParams &pp)
 {
        const View *view = owner_->view();
@@ -180,7 +193,7 @@ void Trace::paint_axis(QPainter &p, ViewItemPaintParams &pp, int y)
 {
        p.setRenderHint(QPainter::Antialiasing, false);
 
-       p.setPen(AxisPen);
+       p.setPen(axis_pen_);
        p.drawLine(QPointF(pp.left(), y), QPointF(pp.right(), y));
 
        p.setRenderHint(QPainter::Antialiasing, true);
@@ -241,6 +254,14 @@ void Trace::set_colour(QColor colour)
        base_->set_colour(colour);
 }
 
+void Trace::set_segment_display_mode(SegmentDisplayMode mode)
+{
+       segment_display_mode_ = mode;
+
+       if (owner_)
+               owner_->row_item_appearance_changed(true, true);
+}
+
 void Trace::on_name_changed(const QString &text)
 {
        /* This event handler is called by SignalBase when the name was changed there */