summaryrefslogtreecommitdiffstats
path: root/src/track/cue.cpp
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-03-02 01:04:00 +0100
committerGitHub <noreply@github.com>2020-03-02 01:04:00 +0100
commit18a134faba514f60a273a9b0aa2f3c9a6a09f214 (patch)
treecacb095f8d961795de4ecef5af81600a39e652dd /src/track/cue.cpp
parent99bfeef3020ce6469f79c7a377965244d15add35 (diff)
parent09d2383428918dc45a48536bc59b7c4effa64cf8 (diff)
Merge pull request #2523 from Holzhaus/cueinfo
Add CueInfo DTO
Diffstat (limited to 'src/track/cue.cpp')
-rw-r--r--src/track/cue.cpp44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/track/cue.cpp b/src/track/cue.cpp
index d0951a86d9..b171b1244d 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"
@@ -23,7 +25,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),
@@ -32,8 +34,7 @@ Cue::Cue(TrackId trackId)
DEBUG_ASSERT(!m_label.isNull());
}
-Cue::Cue(int id, TrackId trackId, Cue::Type type, double position, double length,
- int hotCue, QString label, PredefinedColorPointer color)
+Cue::Cue(int id, TrackId trackId, mixxx::CueType type, double position, double length, int hotCue, QString label, PredefinedColorPointer color)
: m_bDirty(false),
m_iId(id),
m_trackId(trackId),
@@ -53,6 +54,37 @@ Cue::Cue(int id, TrackId trackId, Cue::Type type, double position, double length
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(Color::kPredefinedColorsSet.predefinedColorFromRgbColor(cueInfo.getColor())) {
+ 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;
@@ -79,12 +111,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;