Deluge Firmware
1.3.0
Build date: 2026.10.08
Toggle main menu visibility
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
26
struct
Iterance
{
27
enum class
DisplayLabelType : uint8_t {
28
NUMERIC,
29
SHORT,
30
LONG,
31
};
32
33
struct
DisplayOptions
{
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
};
Iterance::DisplayOptions
Definition
iterance.h:33
Iterance
Definition
iterance.h:26