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