X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Frowitemowner.h;h=2295e9631542f42da6b65b6dc50ed0968f4d057a;hb=448a72cf7f0225eace2335ec05b979c4e9a6b882;hp=4b538e6d664fa34f0dc7caf2afcf610e21635772;hpb=68b21a71797051fb48ed272bc2a6b4893bdbf517;p=pulseview.git diff --git a/pv/view/rowitemowner.h b/pv/view/rowitemowner.h index 4b538e6d..2295e963 100644 --- a/pv/view/rowitemowner.h +++ b/pv/view/rowitemowner.h @@ -24,6 +24,8 @@ #include #include +#include "rowitemiterator.h" + namespace pv { class SigSession; @@ -35,6 +37,11 @@ class View; class RowItemOwner { +public: + typedef std::vector< std::shared_ptr > item_list; + typedef RowItemIterator iterator; + typedef RowItemIterator const_iterator; + public: /** * Returns the session of the onwer. @@ -56,13 +63,22 @@ public: */ virtual const pv::view::View* view() const = 0; - virtual int owner_v_offset() const = 0; + virtual int owner_visual_v_offset() const = 0; + + /** + * Returns the number of nested parents that this row item owner has. + */ + virtual unsigned int depth() const = 0; + + /** + * Returns a list of row items owned by this object. + */ + virtual item_list& child_items(); /** * Returns a list of row items owned by this object. */ - virtual const std::vector< std::shared_ptr >& - child_items() const; + virtual const item_list& child_items() const; /** * Clears the list of child items. @@ -79,10 +95,44 @@ public: */ void remove_child_item(std::shared_ptr item); - virtual void update_viewport() = 0; + /** + * Returns a depth-first iterator at the beginning of the child RowItem + * tree. + */ + iterator begin(); + + /** + * Returns a depth-first iterator at the end of the child RowItem tree. + */ + iterator end(); + + /** + * Returns a constant depth-first iterator at the beginning of the + * child RowItem tree. + */ + const_iterator begin() const; + + /** + * Returns a constant depth-first iterator at the end of the child + * RowItem tree. + */ + const_iterator end() const; + + /** + * Computes the vertical extents of the contents of this row item owner. + * @return A pair containing the minimum and maximum y-values. + */ + std::pair v_extents() const; + + virtual void restack_items(); + +public: + virtual void appearance_changed(bool label, bool content) = 0; + + virtual void extents_changed(bool horz, bool vert) = 0; private: - std::vector< std::shared_ptr > _items; + item_list _items; }; } // view