BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
button_presser.hpp
1#pragma once
2#include <cstdint>
3#include <utility>
4
5namespace bugui
6{
7struct base_controller;
8
12{
14 void set_midi(uint8_t midi);
16 void set_bool(bool boolean);
19
20 enum states : uint8_t
21 {
26 };
27
29 states get_state() const { return state; }
32 bool get_bool();
35 bool get_midi();
36
39 void clear_values() { available = available_values::none; }
40
41protected:
42 states state{single};
43
44 enum class available_values : std::uint8_t
45 {
46 none = 0
47 , boolean = 1
48 , midi = 2
49 };
50
51 available_values available{available_values::none};
52
53private:
54 friend bool operator& (available_values left
55 , available_values right)
56 {
57 return std::to_underlying(left)
58 & std::to_underlying(right);
59 };
60
61 friend available_values operator| (available_values left
62 , available_values right)
63 {
64 return static_cast<available_values>
65 (std::to_underlying(left)
66 | std::to_underlying(right));
67 };
68
69 uint8_t midi_value{};
70 bool bool_value{false};
71};
72
73} // namespace bugui
Empty struct for devices that do not support MIDI.
Definition midi.hpp:11
Serves as the root of the widget tree. Also provides access to buttons componnents.
Definition base_controller.hpp:10
Provides a generic interface to represent a button press event by the user on the device.
Definition button_presser.hpp:12
states
Definition button_presser.hpp:21
@ single
Single press.
Definition button_presser.hpp:22
@ dragged
Dragged.
Definition button_presser.hpp:24
@ doubled
Doulbe press.
Definition button_presser.hpp:23
@ dropped
Dropped.
Definition button_presser.hpp:25
void set_bool(bool boolean)
Stores the given boolean value.
bool get_midi()
Converts the currently stored value to boolean if necesary, and returns the result.
states get_state() const
Retieves the curent state.
Definition button_presser.hpp:29
void set_double_press()
Flags the input as a double press event.
void clear_values()
Ignore currently held values and allows for overwriting them.
Definition button_presser.hpp:39
void set_midi(uint8_t midi)
Stores the given MIDI value.
bool get_bool()
Converts the currently stored value to boolean if necesary, and returns the result.