numberInput

Beschreibung

Diese Klasse ist eine Eingabemöglichkeit von Zahlen in einem Intervall. Mit ihr lassen sich z.B. Schieberegler erstellen. Von dieser Klasse erben Number_Slider und Number_Counter.

Funktionen

const slider_func_ptr_ptr

slider_callback

virtual void

setTouch (Inputs& input) = 0

NumberInput (std::function<void(int)> callback, ExternalNumberValue* const externalValue = nullptr)

virtual

~NumberInput ()

void

loop (Inputs& input) override

Variablen und Konstanten

ExternalNumberValue* const

externalValue = nullptr

int

value = 0

int

minValue = 0

int

maxValue = 100

uint

steps = 1

Funktionen Beschreibung

const slider_func_ptr slider_callback

Diese Funktion ist die Callback Funktion für NumberInput Objekte. Standardmäßig tut diese Funktion nichts, sie erhält erst eine Bedeutung, wenn bei der Erstellung eines NumberInput Objektes eine Funktion als slider_callback übergeben wird, die aufgerufen wird, wenn der Slider aktiviert wird.

NumberInput(std::function<void(int)> callback, ExternalNumberValue* const externalValue = nullptr)

1NumberInput::NumberInput(std::function<void(int)> callback, ExternalNumberValue* const externalValue) : 
2    callback(callback), 
3    externalValue(externalValue) 
4    {}

Diese Funktion ist ein Konstruktor für Objekte der Klasse numberInput. Als Parameter nimmt der Konstruktor die Callback Funktion slider_callback sowie einen externalValue. slider_callback und externalValue werden mit den korrespondierenden Parametern initialisiert.

virtual ~NumberInput()

1NumberInput::~NumberInput(){};

Der Destruktor wird bei der Zerstörung eines numberInput Objektes aufgerufen.

void loop(Inputs& input) override

 1void NumberInput::loop(Inputs& input) {
 2    if (input.enter) {
 3        LOGGER("Enter")
 4    }
 5
 6    if (!externalValue) return; // if there is no external Value
 7    else if (externalValue->getValue() != value) value = externalValue->getValue();
 8    else if (externalValue->getMinValue() != minValue) minValue = externalValue->getMinValue();
 9    else if (externalValue->getMaxValue() != maxValue) maxValue = externalValue->getMaxValue();
10    else if (externalValue->getSteps() != steps) steps = externalValue->getSteps();
11    else return; // if there is no update
12    
13    draw();
14}

Diese Funktion dient dazu, den Zustand des aktuellen Objektes zu aktualisieren, falls externe Änderungen vorgenommen wurden

    if (!externalValue) return; // if there is no external Value

Liegt kein externalValue vor, so bricht die Funktion ab.

    else if (externalValue->getValue() != value) value = externalValue->getValue();
    else if (externalValue->getMinValue() != minValue) minValue = externalValue->getMinValue();
    else if (externalValue->getMaxValue() != maxValue) maxValue = externalValue->getMaxValue();
    else if (externalValue->getSteps() != steps) steps = externalValue->getSteps();

Nun wird getestet, ob sich value, minValue, maxValue und steps des Objektes der NumberInput Klasse von den in externalValue äquivalenten Werten unterscheiden. Wenn ja, werden die entsprechenden Werte aus externalValue in den jeweiligen Variablen des Objektes der NumberInput Klasse gespeichert.

    else return; // if there is no update

Liegt zwar ein externalValue vor, aber die Werte unterscheiden sich nicht, so bricht die Funktion ebenso ab.

    draw();

Zum Schluss wird das Objekt mit den neuen Werten mit draw gezeichnet.

virtual void setTouch(Inputs& input) = 0

Diese virtuelle Funktion muss von einer abgeleiteten Klasse überschrieben werden. (Siehe Number_Slider, Number_Counter)

Variablen und Konstanten Beschreibung

ExternalNumberValue* const externalValue = nullptr

Dieser ExternalNumberValue* ermöglicht eine externe Steuerung von Objekten der Number_Input Klasse, um einzelne Variablen extern anzupassen.

uint16_t value = 0

Speichert den aktuellen Wert des numberInput Objektes.

int minValue = 0

Gibt den Minimalwert an, den value annehmen darf.

const uint16_t maxValue = 100

Gibt den Maximalwert an, den value annehmen darf.

uint steps = 1

Gibt an, um wie viel value inkrementiert bzw. dekrementiert werden soll.