Chris@8
|
1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@8
|
2
|
Chris@8
|
3 /*
|
Chris@8
|
4 A waveform viewer and audio annotation editor.
|
Chris@8
|
5 Chris Cannam, Queen Mary University of London, 2005-2006
|
Chris@8
|
6
|
Chris@8
|
7 This is experimental software. Not for distribution.
|
Chris@8
|
8 */
|
Chris@8
|
9
|
Chris@8
|
10 #include "Selection.h"
|
Chris@8
|
11
|
Chris@8
|
12 Selection::Selection() :
|
Chris@8
|
13 m_startFrame(0),
|
Chris@8
|
14 m_endFrame(0)
|
Chris@8
|
15 {
|
Chris@8
|
16 }
|
Chris@8
|
17
|
Chris@8
|
18 Selection::Selection(size_t startFrame, size_t endFrame) :
|
Chris@8
|
19 m_startFrame(startFrame),
|
Chris@8
|
20 m_endFrame(endFrame)
|
Chris@8
|
21 {
|
Chris@8
|
22 if (m_startFrame > m_endFrame) {
|
Chris@8
|
23 size_t tmp = m_endFrame;
|
Chris@8
|
24 m_endFrame = m_startFrame;
|
Chris@8
|
25 m_startFrame = tmp;
|
Chris@8
|
26 }
|
Chris@8
|
27 }
|
Chris@8
|
28
|
Chris@8
|
29 Selection::Selection(const Selection &s) :
|
Chris@8
|
30 m_startFrame(s.m_startFrame),
|
Chris@8
|
31 m_endFrame(s.m_endFrame)
|
Chris@8
|
32 {
|
Chris@8
|
33 }
|
Chris@8
|
34
|
Chris@8
|
35 Selection &
|
Chris@8
|
36 Selection::operator=(const Selection &s)
|
Chris@8
|
37 {
|
Chris@8
|
38 if (this != &s) {
|
Chris@8
|
39 m_startFrame = s.m_startFrame;
|
Chris@8
|
40 m_endFrame = s.m_endFrame;
|
Chris@8
|
41 }
|
Chris@8
|
42 return *this;
|
Chris@8
|
43 }
|
Chris@8
|
44
|
Chris@8
|
45 Selection::~Selection()
|
Chris@8
|
46 {
|
Chris@8
|
47 }
|
Chris@8
|
48
|
Chris@8
|
49 bool
|
Chris@8
|
50 Selection::isEmpty() const
|
Chris@8
|
51 {
|
Chris@8
|
52 return m_startFrame == m_endFrame;
|
Chris@8
|
53 }
|
Chris@8
|
54
|
Chris@8
|
55 size_t
|
Chris@8
|
56 Selection::getStartFrame() const
|
Chris@8
|
57 {
|
Chris@8
|
58 return m_startFrame;
|
Chris@8
|
59 }
|
Chris@8
|
60
|
Chris@8
|
61 size_t
|
Chris@8
|
62 Selection::getEndFrame() const
|
Chris@8
|
63 {
|
Chris@8
|
64 return m_endFrame;
|
Chris@8
|
65 }
|
Chris@8
|
66
|
Chris@8
|
67 bool
|
Chris@9
|
68 Selection::contains(size_t frame) const
|
Chris@9
|
69 {
|
Chris@9
|
70 return (frame >= m_startFrame) && (frame < m_endFrame);
|
Chris@9
|
71 }
|
Chris@9
|
72
|
Chris@9
|
73 bool
|
Chris@8
|
74 Selection::operator<(const Selection &s) const
|
Chris@8
|
75 {
|
Chris@9
|
76 if (isEmpty()) {
|
Chris@9
|
77 if (s.isEmpty()) return false;
|
Chris@9
|
78 else return true;
|
Chris@9
|
79 } else {
|
Chris@9
|
80 if (s.isEmpty()) return false;
|
Chris@9
|
81 else return (m_startFrame < s.m_startFrame);
|
Chris@9
|
82 }
|
Chris@8
|
83 }
|
Chris@8
|
84
|
Chris@8
|
85 bool
|
Chris@8
|
86 Selection::operator==(const Selection &s) const
|
Chris@8
|
87 {
|
Chris@9
|
88 if (isEmpty()) return s.isEmpty();
|
Chris@9
|
89
|
Chris@8
|
90 return (m_startFrame == s.m_startFrame &&
|
Chris@8
|
91 m_endFrame == s.m_endFrame);
|
Chris@8
|
92 }
|
Chris@8
|
93
|