Control Surface  1.1.1
MIDI Control Surface library for Arduino
IncrementDecrementSelector.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Selector.hpp"
5 
7 
8 template <setting_t N, class Callback = EmptySelectorCallback>
11 
12  public:
14  Selectable<N> &selectable, const Callback &callback,
17  wrap{wrap} {}
18 
19  void begin() override {
20  Parent::begin();
21  buttons.begin();
22  }
23 
24  void update() override {
26  using IncrDecrButtons = AH::IncrementDecrementButtons;
27  switch (buttons.update()) {
28  case IncrDecrButtons::Increment: this->increment(wrap); break;
29  case IncrDecrButtons::Decrement: this->decrement(wrap); break;
30  case IncrDecrButtons::Reset: this->reset(); break;
31  case IncrDecrButtons::Nothing: break;
32  default: break;
33  }
34  }
35 
36 #ifdef AH_INDIVIDUAL_BUTTON_INVERT
37  void invert() { buttons.invert(); }
38 #endif
39 
41  return buttons.getState();
42  }
43 
44  private:
47 };
48 
49 // -------------------------------------------------------------------------- //
50 
65 template <setting_t N>
67  public:
72  selectable,
73  {},
74  buttons,
75  wrap,
76  } {}
77 };
78 
AH::IncrementDecrementButtons::State
State
An enumeration of the different actions to be performed by the counter.
Definition: IncrementDecrementButtons.hpp:52
GenericSelector::begin
void begin() override
Initialize this updatable.
Definition: Selector.hpp:73
GenericIncrementDecrementSelector::wrap
Wrap wrap
Definition: IncrementDecrementSelector.hpp:46
AH::IncrementDecrementButtons::getState
State getState() const
Return the state of the increment/decrement button without updating it.
Definition: IncrementDecrementButtons.hpp:70
AH::IncrementDecrementButtons::update
State update()
Update and return the state of the increment/decrement button.
Definition: IncrementDecrementButtons.hpp:62
IncrementDecrementSelector::IncrementDecrementSelector
IncrementDecrementSelector(Selectable< N > &selectable, const AH::IncrementDecrementButtons &buttons, Wrap wrap=Wrap::Wrap)
Definition: IncrementDecrementSelector.hpp:68
AH::IncrementDecrementButtons
A class for buttons that increment and decrement some counter or setting.
Definition: IncrementDecrementButtons.hpp:25
GenericSelector::update
void update() override
Update this updatable.
Definition: Selector.hpp:78
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
Selectable
Definition: Selectable.hpp:11
GenericSelector::callback
Callback callback
Definition: Selector.hpp:140
GenericSelector::increment
void increment(Wrap wrap)
Add one to the setting, wrap around or clamp, depending on the parameter, if the new setting would be...
Definition: Selector.hpp:105
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
IncrementDecrementSelector
Selector with two buttons (one to increment, one to decrement).
Definition: IncrementDecrementSelector.hpp:66
GenericIncrementDecrementSelector::GenericIncrementDecrementSelector
GenericIncrementDecrementSelector(Selectable< N > &selectable, const Callback &callback, const AH::IncrementDecrementButtons &buttons, Wrap wrap=Wrap::Wrap)
Definition: IncrementDecrementSelector.hpp:13
AH::IncrementDecrementButtons::begin
void begin()
Definition: IncrementDecrementButtons.hpp:42
Wrap
Wrap
An enumeration to set the behavior of selectors that are incremented (decremented) beyond their maxim...
Definition: Selector.hpp:14
GenericSelector
Definition: Selector.hpp:57
GenericIncrementDecrementSelector::update
void update() override
Update this updatable.
Definition: IncrementDecrementSelector.hpp:24
Selector.hpp
GenericSelector::reset
void reset()
Reset the selection to the initial selection.
Definition: Selector.hpp:81
GenericIncrementDecrementSelector::begin
void begin() override
Initialize this updatable.
Definition: IncrementDecrementSelector.hpp:19
GenericIncrementDecrementSelector::invert
void invert()
Definition: IncrementDecrementSelector.hpp:37
AH::IncrementDecrementButtons::invert
void invert()
Definition: IncrementDecrementButtons.hpp:74
Wrap::Wrap
When the maximum (minimum) setting is reached, wrap around to the minimum (maximum) setting.
GenericSelector::decrement
void decrement(Wrap wrap)
Subtract one from the setting, wrap around or clamp, depending on the parameter, if the new setting w...
Definition: Selector.hpp:124
GenericSelector::selectable
Selectable< N > & selectable
Definition: Selector.hpp:137
GenericIncrementDecrementSelector::buttons
AH::IncrementDecrementButtons buttons
Definition: IncrementDecrementSelector.hpp:45
GenericIncrementDecrementSelector::getButtonsState
AH::IncrementDecrementButtons::State getButtonsState() const
Definition: IncrementDecrementSelector.hpp:40
GenericIncrementDecrementSelector
Definition: IncrementDecrementSelector.hpp:9
IncrementDecrementButtons.hpp