summaryrefslogtreecommitdiffstats
path: root/src/track/cue.cpp
diff options
context:
space:
mode:
authorJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2020-03-02 10:22:57 +0100
committerJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2020-03-02 10:22:57 +0100
commitfa6dba8f86420a6eb9979b51f8c10629b4b72466 (patch)
tree0bec26b36e5f9624f4c4dee5b6e5b1ad165261b1 /src/track/cue.cpp
parent8d3672390c77b1199171517422149f623ab00d6a (diff)
parent18a134faba514f60a273a9b0aa2f3c9a6a09f214 (diff)
Merge branch 'master' of github.com:mixxxdj/mixxx into hotcue-rgb-colors
Diffstat (limited to 'src/track/cue.cpp')
-rw-r--r--src/track/cue.cpp43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/track/cue.cpp b/src/track/cue.cpp
index 57406665e8..f39f84ceb6 100644
--- a/src/track/cue.cpp
+++ b/src/track/cue.cpp
@@ -1,10 +1,12 @@
// cue.cpp
// Created 10/26/2009 by RJ Ryan (rryan@mit.edu)
+#include "track/cue.h"
+
#include <QMutexLocker>
#include <QtDebug>
-#include "track/cue.h"
+#include "engine/engine.h"
#include "util/assert.h"
#include "util/color/color.h"
@@ -24,7 +26,7 @@ Cue::Cue(TrackId trackId)
: m_bDirty(false),
m_iId(-1),
m_trackId(trackId),
- m_type(Cue::Type::Invalid),
+ m_type(mixxx::CueType::Invalid),
m_sampleStartPosition(Cue::kNoPosition),
m_sampleEndPosition(Cue::kNoPosition),
m_iHotCue(-1),
@@ -35,7 +37,7 @@ Cue::Cue(TrackId trackId)
Cue::Cue(int id,
TrackId trackId,
- Cue::Type type,
+ mixxx::CueType type,
double position,
double length,
int hotCue,
@@ -60,6 +62,37 @@ Cue::Cue(int id,
m_sampleEndPosition = Cue::kNoPosition;
}
}
+
+Cue::Cue(TrackId trackId, mixxx::AudioSignal::SampleRate sampleRate, const mixxx::CueInfo& cueInfo)
+ : m_bDirty(false),
+ m_iId(-1),
+ m_trackId(trackId),
+ m_type(cueInfo.getType()),
+ m_sampleStartPosition(Cue::kNoPosition),
+ m_sampleEndPosition(Cue::kNoPosition),
+ m_iHotCue(Cue::kNoHotCue),
+ m_label(cueInfo.getLabel()),
+ m_color(cueInfo.getColor().value_or(kDefaultCueColor)) {
+ DEBUG_ASSERT(!m_label.isNull());
+ DEBUG_ASSERT(sampleRate.valid());
+
+ const double sampleRateKhz = sampleRate / 1000.0;
+ const double millisecsToSamplesFactor = sampleRateKhz * mixxx::kEngineChannelCount;
+ DEBUG_ASSERT(millisecsToSamplesFactor > 0);
+
+ if (cueInfo.getStartPositionMillis()) {
+ m_sampleStartPosition = (*cueInfo.getStartPositionMillis()) * millisecsToSamplesFactor;
+ }
+
+ if (cueInfo.getEndPositionMillis()) {
+ m_sampleEndPosition = (*cueInfo.getEndPositionMillis()) * millisecsToSamplesFactor;
+ }
+
+ if (cueInfo.getHotCueNumber()) {
+ m_iHotCue = *cueInfo.getHotCueNumber();
+ }
+}
+
int Cue::getId() const {
QMutexLocker lock(&m_mutex);
return m_iId;
@@ -86,12 +119,12 @@ void Cue::setTrackId(TrackId trackId) {
emit updated();
}
-Cue::Type Cue::getType() const {
+mixxx::CueType Cue::getType() const {
QMutexLocker lock(&m_mutex);
return m_type;
}
-void Cue::setType(Cue::Type type) {
+void Cue::setType(mixxx::CueType type) {
QMutexLocker lock(&m_mutex);
m_type = type;
m_bDirty = true;