summaryrefslogtreecommitdiffstats
path: root/src/track/cue.cpp
diff options
context:
space:
mode:
authorFerran Pujol Camins <ferranpujolcamins@gmail.com>2019-11-11 13:19:43 +0100
committerFerran Pujol Camins <ferranpujolcamins@gmail.com>2019-11-11 13:19:43 +0100
commita16a2905296c938803196bdf729ab090587f0663 (patch)
tree82f4dcb737744d20ace4d86ac5dd906324b60a4c /src/track/cue.cpp
parent03b4f06557d6c25301af69cb96b033b1b825a15d (diff)
parentb23d56e2df37db12fb7860306bd878b2a968f118 (diff)
Merge branch 'master' into new_colors_impl
Diffstat (limited to 'src/track/cue.cpp')
-rw-r--r--src/track/cue.cpp76
1 files changed, 33 insertions, 43 deletions
diff --git a/src/track/cue.cpp b/src/track/cue.cpp
index 828c0958ab..2c34957a2f 100644
--- a/src/track/cue.cpp
+++ b/src/track/cue.cpp
@@ -23,10 +23,9 @@ Cue::Cue(TrackId trackId)
: m_bDirty(false),
m_iId(-1),
m_trackId(trackId),
- m_source(UNKNOWN),
- m_type(INVALID),
- m_samplePosition(-1.0),
- m_length(0.0),
+ m_type(Cue::Type::Invalid),
+ m_sampleStartPosition(Cue::kNoPosition),
+ m_sampleEndPosition(Cue::kNoPosition),
m_iHotCue(-1),
m_label(kDefaultLabel),
m_color(QColor()) {
@@ -35,8 +34,7 @@ Cue::Cue(TrackId trackId)
Cue::Cue(int id,
TrackId trackId,
- Cue::CueSource source,
- Cue::CueType type,
+ Cue::Type type,
double position,
double length,
int hotCue,
@@ -45,16 +43,22 @@ Cue::Cue(int id,
: m_bDirty(false),
m_iId(id),
m_trackId(trackId),
- m_source(source),
m_type(type),
- m_samplePosition(position),
- m_length(length),
+ m_sampleStartPosition(position),
m_iHotCue(hotCue),
m_label(label),
m_color(color) {
DEBUG_ASSERT(!m_label.isNull());
+ if (length) {
+ if (position != Cue::kNoPosition) {
+ m_sampleEndPosition = position + length;
+ } else {
+ m_sampleEndPosition = length;
+ }
+ } else {
+ m_sampleEndPosition = Cue::kNoPosition;
+ }
}
-
int Cue::getId() const {
QMutexLocker lock(&m_mutex);
return m_iId;
@@ -81,40 +85,35 @@ void Cue::setTrackId(TrackId trackId) {
emit(updated());
}
-Cue::CueSource Cue::getSource() const {
+Cue::Type Cue::getType() const {
QMutexLocker lock(&m_mutex);
- return m_source;
+ return m_type;
}
-void Cue::setSource(CueSource source) {
+void Cue::setType(Cue::Type type) {
QMutexLocker lock(&m_mutex);
- m_source = source;
+ m_type = type;
m_bDirty = true;
lock.unlock();
emit(updated());
}
-Cue::CueType Cue::getType() const {
+double Cue::getPosition() const {
QMutexLocker lock(&m_mutex);
- return m_type;
+ return m_sampleStartPosition;
}
-void Cue::setType(Cue::CueType type) {
+void Cue::setStartPosition(double samplePosition) {
QMutexLocker lock(&m_mutex);
- m_type = type;
+ m_sampleStartPosition = samplePosition;
m_bDirty = true;
lock.unlock();
emit(updated());
}
-double Cue::getPosition() const {
- QMutexLocker lock(&m_mutex);
- return m_samplePosition;
-}
-
-void Cue::setPosition(double samplePosition) {
+void Cue::setEndPosition(double samplePosition) {
QMutexLocker lock(&m_mutex);
- m_samplePosition = samplePosition;
+ m_sampleEndPosition = samplePosition;
m_bDirty = true;
lock.unlock();
emit(updated());
@@ -122,15 +121,13 @@ void Cue::setPosition(double samplePosition) {
double Cue::getLength() const {
QMutexLocker lock(&m_mutex);
- return m_length;
-}
-
-void Cue::setLength(double length) {
- QMutexLocker lock(&m_mutex);
- m_length = length;
- m_bDirty = true;
- lock.unlock();
- emit(updated());
+ if (m_sampleEndPosition == Cue::kNoPosition) {
+ return 0;
+ }
+ if (m_sampleStartPosition == Cue::kNoPosition) {
+ return m_sampleEndPosition;
+ }
+ return m_sampleEndPosition - m_sampleStartPosition;
}
int Cue::getHotCue() const {
@@ -187,16 +184,9 @@ void Cue::setDirty(bool dirty) {
double Cue::getEndPosition() const {
QMutexLocker lock(&m_mutex);
- if (m_samplePosition == -1.0) {
- return m_length;
- } else if (m_length == 0.0) {
- return -1.0;
- } else {
- return m_samplePosition + m_length;
- }
+ return m_sampleEndPosition;
}
bool operator==(const CuePosition& lhs, const CuePosition& rhs) {
- return lhs.getPosition() == rhs.getPosition() &&
- lhs.getSource() == rhs.getSource();
+ return lhs.getPosition() == rhs.getPosition();
}