X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Frowitem.h;h=f2e6a66ec87bf6b6c460777d2a65ed832d260757;hb=14ca8a8deb6fe6d96567aa11a669dce68af67885;hp=a48af5ce5fa0e2cb62e2b7baa507c35b0a6aaf88;hpb=23935421086ebf58cfe68228971ded327a6155a1;p=pulseview.git diff --git a/pv/view/rowitem.h b/pv/view/rowitem.h index a48af5ce..f2e6a66e 100644 --- a/pv/view/rowitem.h +++ b/pv/view/rowitem.h @@ -21,15 +21,25 @@ #ifndef PULSEVIEW_PV_VIEW_HEADERITEM_H #define PULSEVIEW_PV_VIEW_HEADERITEM_H +#include + +#include + #include "selectableitem.h" namespace pv { namespace view { -class View; +class RowItemOwner; -class RowItem : public SelectableItem +class RowItem : public SelectableItem, + public std::enable_shared_from_this { + Q_OBJECT + Q_PROPERTY(int visual_v_offset + READ visual_v_offset + WRITE set_visual_v_offset) + public: /** * Constructor. @@ -44,23 +54,60 @@ public: /** * Gets the vertical layout offset of this signal. */ - int get_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); /** - * Sets the view that owns this trace in the view trace hierachy. + * 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); + + /** + * Begins an animation that will animate the visual offset toward + * the layout offset. + */ + void animate_to_layout_v_offset(); + + /** + * Gets the owner this trace in the view trace hierachy. + */ + pv::view::RowItemOwner* owner() const; + + /** + * Sets the owner this trace in the view trace hierachy. * @param The new owner of the trace. */ - void set_view(pv::view::View *view); + void set_owner(pv::view::RowItemOwner *owner); + + /** + * Gets the visual y-offset of the axis. + */ + int get_visual_y() const; + + /** + * Gets the drag point of the row item. + */ + QPoint point() const; /** - * Gets the y-offset of the axis. + * 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 v_extents() const = 0; /** * Paints the background layer of the trace with a QPainter @@ -101,15 +148,19 @@ public: * 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::View *_view; + pv::view::RowItemOwner *_owner; + + int _layout_v_offset; + int _visual_v_offset; - int _v_offset; +private: + QPropertyAnimation _v_offset_animation; }; } // namespace view