namespace views {
namespace trace {
+/**
+ * The Trace class represents a @ref TraceTreeItem which occupies some vertical
+ * space on the canvas and spans across its entire width, essentially showing
+ * a time series of values, events, objects or similar. While easily confused
+ * with @ref Signal, the difference is that Trace may represent anything that
+ * can be drawn, not just numeric values. One example is a @ref DecodeTrace.
+ *
+ * For this reason, Trace is more generic and contains properties and helpers
+ * that benefit any kind of time series items.
+ */
class Trace : public TraceTreeItem
{
Q_OBJECT
+public:
+ /**
+ * Allowed values for the multi-segment display mode.
+ *
+ * Note: Consider these locations when updating the list:
+ * *
+ * @ref View::set_segment_display_mode
+ * @ref View::on_segment_changed
+ * @ref AnalogSignal::get_analog_segment_to_paint
+ * @ref AnalogSignal::get_logic_segment_to_paint
+ * @ref LogicSignal::get_logic_segment_to_paint
+ * @ref StandardBar
+ */
+ enum SegmentDisplayMode {
+ ShowLastSegmentOnly = 1,
+ ShowLastCompleteSegmentOnly,
+ ShowSingleSegmentOnly,
+ ShowAllSegments,
+ ShowAccumulatedIntensity
+ };
+
private:
static const QPen AxisPen;
static const int LabelHitPadding;
*/
virtual void set_colour(QColor colour);
+ /**
+ * Configures the segment display mode to use.
+ */
+ virtual void set_segment_display_mode(SegmentDisplayMode mode);
+
/**
* Paints the signal label.
* @param p the QPainter to paint into.
*/
QRectF label_rect(const QRectF &rect) const;
+ void set_current_segment(const int segment);
+
+ int get_current_segment() const;
+
protected:
/**
* Paints the background layer of the signal with a QPainter.
protected:
shared_ptr<data::SignalBase> base_;
+ QPen axis_pen_;
+
+ SegmentDisplayMode segment_display_mode_;
+
+ /// The ID of the currently displayed segment
+ int current_segment_;
private:
pv::widgets::Popup *popup_;