diff options
Diffstat (limited to 'src/track')
-rw-r--r-- | src/track/cue.cpp | 13 | ||||
-rw-r--r-- | src/track/cue.h | 1 | ||||
-rw-r--r-- | src/track/track.cpp | 14 | ||||
-rw-r--r-- | src/track/track.h | 2 |
4 files changed, 30 insertions, 0 deletions
diff --git a/src/track/cue.cpp b/src/track/cue.cpp index b2d9233d34..96d0365f64 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -195,6 +195,19 @@ void Cue::setEndPosition(double samplePosition) { emit updated(); } +void Cue::shiftPositionFrames(double frameOffset) { + QMutexLocker lock(&m_mutex); + if (m_sampleStartPosition != kNoPosition) { + m_sampleStartPosition += frameOffset * mixxx::kEngineChannelCount; + } + if (m_sampleEndPosition != kNoPosition) { + m_sampleEndPosition += frameOffset * mixxx::kEngineChannelCount; + } + m_bDirty = true; + lock.unlock(); + emit updated(); +} + double Cue::getLength() const { QMutexLocker lock(&m_mutex); if (m_sampleEndPosition == Cue::kNoPosition) { diff --git a/src/track/cue.h b/src/track/cue.h index f6fe28ae72..d7c6d36f9a 100644 --- a/src/track/cue.h +++ b/src/track/cue.h @@ -48,6 +48,7 @@ class Cue : public QObject { double samplePosition = kNoPosition); void setEndPosition( double samplePosition = kNoPosition); + void shiftPositionFrames(double frameOffset); double getLength() const; diff --git a/src/track/track.cpp b/src/track/track.cpp index 24781b18df..1547a42985 100644 --- a/src/track/track.cpp +++ b/src/track/track.cpp @@ -759,6 +759,20 @@ void Track::setCuePoint(CuePosition cue) { emit cuesUpdated(); } +void Track::shiftCuePositionsMillis(double milliseconds) { + QMutexLocker lock(&m_qMutex); + + VERIFY_OR_DEBUG_ASSERT(m_streamInfo) { + return; + } + double frames = m_streamInfo->getSignalInfo().millis2frames(milliseconds); + for (const CuePointer& pCue : m_cuePoints) { + pCue->shiftPositionFrames(frames); + } + + markDirtyAndUnlock(&lock); +} + void Track::analysisFinished() { emit analyzed(); } diff --git a/src/track/track.h b/src/track/track.h index 7d7c0c6ba7..75524ee438 100644 --- a/src/track/track.h +++ b/src/track/track.h @@ -252,6 +252,8 @@ class Track : public QObject { CuePosition getCuePoint() const; // Set the track's main cue point void setCuePoint(CuePosition cue); + /// Shift all cues by a constant offset + void shiftCuePositionsMillis(double milliseconds); // Call when analysis is done. void analysisFinished(); |