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;
9struct button_presser
10{
11 button_presser() = default;
12
13 void set_midi(uint8_t midi);
14 void set_bool(bool boolean);
15 void set_double_press();
16
17 enum states : uint8_t
18 {
23 };
24
25 states get_state() const { return state; }
26
27 bool get_bool();
28 bool get_midi();
29
30 void clear_values() { available = available_values::none; }
31
32protected:
33 states state{single};
34
35 enum class available_values : std::uint8_t
36 {
37 none = 0
38 , boolean = 1
39 , midi = 2
40 };
41
42 available_values available{available_values::none};
43
44private:
45 friend bool operator& (available_values left
46 , available_values right)
47 {
48 return std::to_underlying(left)
49 & std::to_underlying(right);
50 };
51
52 friend available_values operator| (available_values left
53 , available_values right)
54 {
55 return static_cast<available_values>
56 (std::to_underlying(left)
57 | std::to_underlying(right));
58 };
59
60 uint8_t midi_value{};
61 bool bool_value{false};
62};
63
64} // namespace bugui
Serves as the root of the widget tree. Also provides access to buttons componnents.
Definition base_controller.hpp:10
states
Definition button_presser.hpp:18
@ single
Single press.
Definition button_presser.hpp:19
@ dragged
Dragged.
Definition button_presser.hpp:21
@ doubled
Doulbe press.
Definition button_presser.hpp:20
@ dropped
Dropped.
Definition button_presser.hpp:22
Definition midi.hpp:36