Control Surface  1.2.0
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::Nothing: break;
29  case IncrDecrButtons::IncrementShort: // fallthrough
30  case IncrDecrButtons::IncrementLong: // fallthrough
31  case IncrDecrButtons::IncrementHold: this->increment(wrap); break;
32  case IncrDecrButtons::DecrementShort: // fallthrough
33  case IncrDecrButtons::DecrementLong: // fallthrough
34  case IncrDecrButtons::DecrementHold: this->decrement(wrap); break;
35  case IncrDecrButtons::Reset: this->reset(); break;
36  default: break;
37  }
38  }
39 
40 #ifdef AH_INDIVIDUAL_BUTTON_INVERT
41  void invert() { buttons.invert(); }
42 #endif
43 
45  return buttons.getState();
46  }
47 
48  private:
51 };
52 
53 // -------------------------------------------------------------------------- //
54 
69 template <setting_t N>
71  public:
76  selectable,
77  {},
78  buttons,
79  wrap,
80  } {}
81 };
82 
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:50
AH::IncrementDecrementButtons::getState
State getState() const
Return the state of the increment/decrement button without updating it.
Definition: IncrementDecrementButtons.hpp:74
AH::IncrementDecrementButtons::update
State update()
Update and return the state of the increment/decrement button.
Definition: IncrementDecrementButtons.hpp:66
IncrementDecrementSelector::IncrementDecrementSelector
IncrementDecrementSelector(Selectable< N > &selectable, const AH::IncrementDecrementButtons &buttons, Wrap wrap=Wrap::Wrap)
Definition: IncrementDecrementSelector.hpp:72
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< N, EmptySelectorCallback >::callback
EmptySelectorCallback callback
Definition: Selector.hpp:145
GenericSelector< N, EmptySelectorCallback >::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:110
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:70
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< N, EmptySelectorCallback >::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:41
AH::IncrementDecrementButtons::invert
void invert()
Definition: IncrementDecrementButtons.hpp:78
GenericSelector< N, EmptySelectorCallback >::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:129
GenericSelector< N, EmptySelectorCallback >::selectable
Selectable< N > & selectable
Definition: Selector.hpp:142
GenericIncrementDecrementSelector::buttons
AH::IncrementDecrementButtons buttons
Definition: IncrementDecrementSelector.hpp:49
GenericIncrementDecrementSelector::getButtonsState
AH::IncrementDecrementButtons::State getButtonsState() const
Definition: IncrementDecrementSelector.hpp:44
GenericIncrementDecrementSelector
Definition: IncrementDecrementSelector.hpp:9
IncrementDecrementButtons.hpp