Mercurial > hg > svcore
diff base/Selection.h @ 24:bb9291d84810
* Add ffwd/rewind
* Abstract out MultiSelection
author | Chris Cannam |
---|---|
date | Wed, 08 Feb 2006 17:59:16 +0000 |
parents | 73d85d19919f |
children | 935a2419a77c |
line wrap: on
line diff
--- a/base/Selection.h Mon Feb 06 17:24:52 2006 +0000 +++ b/base/Selection.h Wed Feb 08 17:59:16 2006 +0000 @@ -11,6 +11,7 @@ #define _SELECTION_H_ #include <cstddef> +#include <set> class Selection { @@ -34,4 +35,31 @@ size_t m_endFrame; }; +class MultiSelection +{ +public: + MultiSelection(); + virtual ~MultiSelection(); + + typedef std::set<Selection> SelectionList; + + const SelectionList &getSelections() const; + void setSelection(const Selection &selection); + void addSelection(const Selection &selection); + void removeSelection(const Selection &selection); + void clearSelections(); + + /** + * Return the selection that contains a given frame. + * If defaultToFollowing is true, and if the frame is not in a + * selected area, return the next selection after the given frame. + * Return the empty selection if no appropriate selection is found. + */ + Selection getContainingSelection(size_t frame, bool defaultToFollowing); + +protected: + SelectionList m_selections; +}; + + #endif