#ifndef PULSEVIEW_PV_VIEW_HEADERITEM_H
#define PULSEVIEW_PV_VIEW_HEADERITEM_H
+#include <memory>
+
#include "selectableitem.h"
namespace pv {
class RowItemOwner;
-class RowItem : public SelectableItem
+class RowItem : public SelectableItem,
+ public std::enable_shared_from_this<pv::view::RowItem>
{
+ Q_OBJECT
+
public:
/**
* Constructor.
/**
* Gets the vertical layout offset of this signal.
*/
- int v_offset() const;
+ int layout_v_offset() const;
/**
* Sets the vertical layout offset of this signal.
*/
- void set_v_offset(int v_offset);
+ void set_layout_v_offset(int v_offset);
+
+ /**
+ * Gets the vertical visual offset of this signal.
+ */
+ int visual_v_offset() const;
+
+ /**
+ * Sets the vertical visual offset of this signal.
+ */
+ void set_visual_v_offset(int v_offset);
+
+ /**
+ * Sets the visual and layout offset of this signal.
+ */
+ void force_to_v_offset(int v_offset);
/**
* Gets the owner this trace in the view trace hierachy.
void set_owner(pv::view::RowItemOwner *owner);
/**
- * Gets the y-offset of the axis.
+ * Gets the visual y-offset of the axis.
+ */
+ int get_visual_y() const;
+
+ /**
+ * Gets the drag point of the row item.
+ */
+ QPoint point() const;
+
+ /**
+ * Computes the vertical extents of the contents of this row item.
+ * @return A pair containing the minimum and maximum y-values.
*/
- int get_y() const;
+ virtual std::pair<int, int> v_extents() const = 0;
/**
* Paints the background layer of the trace with a QPainter
* area.
* @return Returns the rectangle of the signal label.
*/
- virtual QRectF label_rect(int right) = 0;
+ virtual QRectF label_rect(int right) const = 0;
public:
virtual void hover_point_changed();
protected:
pv::view::RowItemOwner *_owner;
- int _v_offset;
+ int _layout_v_offset;
+ int _visual_v_offset;
};
} // namespace view