diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2020-11-26 23:01:19 +0100 |
---|---|---|
committer | Uwe Klotz <uklotz@mixxx.org> | 2020-11-26 23:01:19 +0100 |
commit | 63a8f30c2e1d03ea12f4aa3668135ac4ba72bc57 (patch) | |
tree | aef71b7b9284185abf9d9ab97e672cee0fae8155 /src/engine/controls | |
parent | b1729ce465a19d54d177207928bfc970be2c915b (diff) |
Safe and robust conversion between hot cue index <-> number
Diffstat (limited to 'src/engine/controls')
-rw-r--r-- | src/engine/controls/cuecontrol.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/engine/controls/cuecontrol.cpp b/src/engine/controls/cuecontrol.cpp index ce4831caa9..b1ac875959 100644 --- a/src/engine/controls/cuecontrol.cpp +++ b/src/engine/controls/cuecontrol.cpp @@ -45,20 +45,32 @@ inline mixxx::RgbColor::optional_t doubleToRgbColor(double value) { return mixxx::RgbColor::optional(colorCode); } -/// Convert 0-based hot cue index to 1-based number +/// Convert hot cue index to 1-based number +/// +/// Works independent of if the hot cue index is either 0-based +/// or 1..n-based. inline int hotcueIndexToHotcueNumber(int hotcueIndex) { - if (hotcueIndex < 0 || hotcueIndex == Cue::kNoHotCue) { + if (hotcueIndex >= Cue::kFirstHotCue) { + DEBUG_ASSERT(hotcueIndex != Cue::kNoHotCue); + return (hotcueIndex - Cue::kFirstHotCue) + 1; // to 1-based numbering + } else { + DEBUG_ASSERT(hotcueIndex == Cue::kNoHotCue); return kNoHotCueNumber; } - return hotcueIndex + 1; } -/// Convert 1-based hot cue number to 0-based index +/// Convert 1-based hot cue number to hot cue index. +/// +/// Works independent of if the hot cue index is either 0-based +/// or 1..n-based. inline int hotcueNumberToHotcueIndex(int hotcueNumber) { - if (hotcueNumber < 1 || hotcueNumber == kNoHotCueNumber) { + if (hotcueNumber >= 1) { + DEBUG_ASSERT(hotcueNumber != kNoHotCueNumber); + return Cue::kFirstHotCue + (hotcueNumber - 1); // from 1-based numbering + } else { + DEBUG_ASSERT(hotcueNumber == kNoHotCueNumber); return Cue::kNoHotCue; } - return hotcueNumber - 1; } } // namespace |