* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PULSEVIEW_PV_VIEW_TRACETREEITEMOWNER_HPP
-#define PULSEVIEW_PV_VIEW_TRACETREEITEMOWNER_HPP
+#ifndef PULSEVIEW_PV_VIEWS_TRACEVIEW_TRACETREEITEMOWNER_HPP
+#define PULSEVIEW_PV_VIEWS_TRACEVIEW_TRACETREEITEMOWNER_HPP
-#include <memory>
-#include <vector>
+#include "viewitemowner.hpp"
+#include "tracetreeitem.hpp"
-#include "rowitemiterator.hpp"
+using std::pair;
+using std::shared_ptr;
+using std::vector;
namespace pv {
class Session;
-namespace view {
+namespace views {
+namespace TraceView {
class TraceTreeItem;
class View;
-class TraceTreeItemOwner
+class TraceTreeItemOwner : public ViewItemOwner
{
-public:
- typedef std::vector< std::shared_ptr<TraceTreeItem> > item_list;
- typedef RowItemIterator<TraceTreeItemOwner, TraceTreeItem> iterator;
- typedef RowItemIterator<const TraceTreeItemOwner, TraceTreeItem> const_iterator;
-
public:
/**
- * Returns the session of the onwer.
+ * Returns the view of the owner.
*/
- virtual pv::Session& session() = 0;
+ virtual View* view() = 0;
/**
- * Returns the session of the owner.
+ * Returns the view of the owner.
*/
- virtual const pv::Session& session() const = 0;
+ virtual const View* view() const = 0;
+
+ virtual int owner_visual_v_offset() const = 0;
/**
- * Returns the view of the owner.
+ * Returns the session of the owner.
*/
- virtual pv::view::View* view() = 0;
+ virtual Session& session() = 0;
/**
- * Returns the view of the owner.
+ * Returns the session of the owner.
*/
- virtual const pv::view::View* view() const = 0;
-
- virtual int owner_visual_v_offset() const = 0;
+ virtual const Session& session() const = 0;
/**
* Returns the number of nested parents that this row item owner has.
/**
* Returns a list of row items owned by this object.
*/
- virtual item_list& child_items();
+ virtual const item_list& child_items() const;
/**
* Returns a list of row items owned by this object.
*/
- virtual const item_list& child_items() const;
+ vector< shared_ptr<TraceTreeItem> > trace_tree_child_items() const;
/**
* Clears the list of child items.
/**
* Adds a child item to this object.
*/
- void add_child_item(std::shared_ptr<TraceTreeItem> item);
+ void add_child_item(shared_ptr<TraceTreeItem> item);
/**
* Removes a child item from this object.
*/
- void remove_child_item(std::shared_ptr<TraceTreeItem> item);
-
- /**
- * Returns a depth-first iterator at the beginning of the child TraceTreeItem
- * tree.
- */
- iterator begin();
+ void remove_child_item(shared_ptr<TraceTreeItem> item);
- /**
- * Returns a depth-first iterator at the end of the child TraceTreeItem tree.
- */
- iterator end();
-
- /**
- * Returns a constant depth-first iterator at the beginning of the
- * child TraceTreeItem tree.
- */
- const_iterator begin() const;
-
- /**
- * Returns a constant depth-first iterator at the end of the child
- * TraceTreeItem tree.
- */
- const_iterator end() const;
-
- /**
- * Makes a list of row item owners of all the row items that are
- * decendants of this item.
- */
- std::set< TraceTreeItemOwner* > list_row_item_owners();
-
- /**
- * Creates a list of decendant signals filtered by type.
- */
- template<class T>
- std::set< std::shared_ptr<T> > list_by_type() {
- std::set< std::shared_ptr<T> > items;
- for (const auto &r : *this) {
- std::shared_ptr<T> p = std::dynamic_pointer_cast<T>(r);
- if (p)
- items.insert(p);
- }
-
- return items;
- }
+ virtual void restack_items();
/**
* Computes the vertical extents of the contents of this row item owner.
* @return A pair containing the minimum and maximum y-values.
*/
- std::pair<int, int> v_extents() const;
+ pair<int, int> v_extents() const;
- virtual void restack_items();
+ /*
+ * Reassigns background color states to all its children, thereby
+ * providing them with alternating backgrounds.
+ * @param next_bgcolour_state First brightness state to use.
+ * @return The next brightness state to use.
+ */
+ bool reassign_bgcolour_states(bool next_bgcolour_state);
public:
virtual void row_item_appearance_changed(bool label, bool content) = 0;
virtual void extents_changed(bool horz, bool vert) = 0;
-
-private:
- item_list items_;
};
-} // view
-} // pv
+} // namespace TraceView
+} // namespace views
+} // namespace pv
-#endif // PULSEVIEW_PV_VIEW_TRACETREEITEMOWNER_HPP
+#endif // PULSEVIEW_PV_VIEWS_TRACEVIEW_TRACETREEITEMOWNER_HPP