lbajardsilogic@0
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@0
|
2
|
lbajardsilogic@0
|
3 /*
|
lbajardsilogic@0
|
4 Sonic Visualiser
|
lbajardsilogic@0
|
5 An audio file viewer and annotation editor.
|
lbajardsilogic@0
|
6 Centre for Digital Music, Queen Mary, University of London.
|
lbajardsilogic@0
|
7 This file copyright 2006 Chris Cannam.
|
lbajardsilogic@0
|
8
|
lbajardsilogic@0
|
9 This program is free software; you can redistribute it and/or
|
lbajardsilogic@0
|
10 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@0
|
11 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@0
|
12 License, or (at your option) any later version. See the file
|
lbajardsilogic@0
|
13 COPYING included with this distribution for more information.
|
lbajardsilogic@0
|
14 */
|
lbajardsilogic@0
|
15
|
lbajardsilogic@0
|
16 #ifndef _SELECTION_H_
|
lbajardsilogic@0
|
17 #define _SELECTION_H_
|
lbajardsilogic@0
|
18
|
lbajardsilogic@0
|
19 #include <cstddef>
|
lbajardsilogic@0
|
20 #include <set>
|
lbajardsilogic@0
|
21
|
lbajardsilogic@0
|
22 #include "XmlExportable.h"
|
lbajardsilogic@0
|
23
|
lbajardsilogic@0
|
24 class Selection
|
lbajardsilogic@0
|
25 {
|
lbajardsilogic@0
|
26 public:
|
lbajardsilogic@0
|
27 Selection();
|
lbajardsilogic@0
|
28 Selection(size_t startFrame, size_t endFrame);
|
lbajardsilogic@0
|
29 Selection(const Selection &);
|
lbajardsilogic@0
|
30 Selection &operator=(const Selection &);
|
lbajardsilogic@0
|
31 virtual ~Selection();
|
lbajardsilogic@0
|
32
|
lbajardsilogic@0
|
33 bool isEmpty() const;
|
lbajardsilogic@0
|
34 size_t getStartFrame() const;
|
lbajardsilogic@0
|
35 size_t getEndFrame() const;
|
lbajardsilogic@0
|
36 bool contains(size_t frame) const;
|
lbajardsilogic@0
|
37
|
lbajardsilogic@0
|
38 bool operator<(const Selection &) const;
|
lbajardsilogic@0
|
39 bool operator==(const Selection &) const;
|
lbajardsilogic@0
|
40
|
lbajardsilogic@0
|
41 protected:
|
lbajardsilogic@0
|
42 size_t m_startFrame;
|
lbajardsilogic@0
|
43 size_t m_endFrame;
|
lbajardsilogic@0
|
44 };
|
lbajardsilogic@0
|
45
|
lbajardsilogic@0
|
46 class MultiSelection : public XmlExportable
|
lbajardsilogic@0
|
47 {
|
lbajardsilogic@0
|
48 public:
|
lbajardsilogic@0
|
49 MultiSelection();
|
lbajardsilogic@0
|
50 virtual ~MultiSelection();
|
lbajardsilogic@0
|
51
|
lbajardsilogic@0
|
52 typedef std::set<Selection> SelectionList;
|
lbajardsilogic@0
|
53
|
lbajardsilogic@0
|
54 const SelectionList &getSelections() const;
|
lbajardsilogic@0
|
55 void setSelection(const Selection &selection);
|
lbajardsilogic@0
|
56 void addSelection(const Selection &selection);
|
lbajardsilogic@0
|
57 void removeSelection(const Selection &selection);
|
lbajardsilogic@0
|
58 void clearSelections();
|
lbajardsilogic@0
|
59
|
lbajardsilogic@0
|
60 /**
|
lbajardsilogic@0
|
61 * Return the selection that contains a given frame.
|
lbajardsilogic@0
|
62 * If defaultToFollowing is true, and if the frame is not in a
|
lbajardsilogic@0
|
63 * selected area, return the next selection after the given frame.
|
lbajardsilogic@0
|
64 * Return the empty selection if no appropriate selection is found.
|
lbajardsilogic@0
|
65 */
|
lbajardsilogic@0
|
66 Selection getContainingSelection(size_t frame, bool defaultToFollowing) const;
|
lbajardsilogic@0
|
67
|
lbajardsilogic@0
|
68 virtual QString toXmlString(QString indent = "",
|
lbajardsilogic@0
|
69 QString extraAttributes = "") const;
|
lbajardsilogic@0
|
70
|
lbajardsilogic@0
|
71 protected:
|
lbajardsilogic@0
|
72 SelectionList m_selections;
|
lbajardsilogic@0
|
73 };
|
lbajardsilogic@0
|
74
|
lbajardsilogic@0
|
75
|
lbajardsilogic@0
|
76 #endif
|