summaryrefslogtreecommitdiffstats
path: root/src/engine/controls
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-11-26 23:01:19 +0100
committerUwe Klotz <uklotz@mixxx.org>2020-11-26 23:01:19 +0100
commit63a8f30c2e1d03ea12f4aa3668135ac4ba72bc57 (patch)
treeaef71b7b9284185abf9d9ab97e672cee0fae8155 /src/engine/controls
parentb1729ce465a19d54d177207928bfc970be2c915b (diff)
Safe and robust conversion between hot cue index <-> number
Diffstat (limited to 'src/engine/controls')
-rw-r--r--src/engine/controls/cuecontrol.cpp24
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