Deluge Firmware 1.3.0
Build date: 2026.10.08
Loading...
Searching...
No Matches
iterance.h
1/*
2 * Copyright © 2014-2023 Synthstrom Audible Limited
3 *
4 * This file is part of The Synthstrom Audible Deluge Firmware.
5 *
6 * The Synthstrom Audible Deluge Firmware is free software: you can redistribute it and/or modify it under the
7 * terms of the GNU General Public License as published by the Free Software Foundation,
8 * either version 3 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along with this program.
15 * If not, see <https://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19
20#include <bitset>
21#include <cstddef>
22#include <cstdint>
23
26struct Iterance {
27 enum class DisplayLabelType : uint8_t {
28 NUMERIC,
29 SHORT,
30 LONG,
31 };
32
34 char const* step_format;
35 char const* prefix = "";
36 DisplayLabelType label_type = DisplayLabelType::SHORT;
37 };
38
39 uint8_t divisor;
40 std::bitset<8> iteranceStep;
41
42 bool operator==(Iterance const& other) const {
43 return other.divisor == divisor && other.iteranceStep == iteranceStep;
44 }
45
46 [[nodiscard]] bool passesCheck(int32_t repeatCount, bool ending) const {
47 // these aren't valid divisors so overloaded to be first/last instead
48 if (divisor == 0) {
49 if (iteranceStep == 1) {
50 return repeatCount == 0;
51 }
52 else {
53 return ending;
54 }
55 }
56 return iteranceStep[repeatCount % divisor];
57 }
58
59 [[nodiscard]] uint16_t toInt() const;
60 static Iterance fromInt(int32_t value);
61
62 [[nodiscard]] int32_t toPresetIndex() const;
63 static Iterance fromPresetIndex(int32_t presetIndex);
64
65 void format_display_value(char* buffer, size_t buffer_size, DisplayOptions options) const;
66 static void format_preset_display_value(int32_t preset_index, char* buffer, size_t buffer_size,
67 DisplayOptions options);
68};
Definition iterance.h:33
Definition iterance.h:26