Button_Rect¶
Beschreibung¶
Diese Klasse erzeugt Button in rechteckiger Form. Dabei können die Ecken auch abgerundet sein.
Beispielbilder¶
Diese Bilder dienen nur der Veranschaulichung, wie Objekte dieser Klasse aussehen können.
new Button_Rect("", COLOR_GREEN + COLOR_RED, 2, 4, TML_empty_switch)
new Button_Rect("Hello World", COLOR_BLUE, 2, 12, TML_empty_button)
Funktionen¶
RectButton (const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value) |
|
RectButton (const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value)) |
|
RectButton (const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value) |
|
RectButton (const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value) |
|
RectButton (const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value) |
|
RectButton (const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value) |
|
RectButton (const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value) |
|
RectButton (const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value) |
|
~RectButton () |
|
void |
draw () override |
uint16_t |
getHeight () |
uint16_t |
getWidth () |
bool |
checkSize () override |
Variablen und Konstanten¶
const „Color“ |
|
const uint8_t |
|
const uint8_t |
Funktionen Beschreibung¶
RectButton(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value):
2 Button(button_callback, value),
3 color(color),
4 itemOn(Display::createItem(itemOn, color.getItemColor())),
5 itemOff(Display::createItem(itemOff, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Button (keinen Switch) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Item
für die aktivierte (itemOn) und deaktivierte (itemOff) Form des Buttons, eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Button Callback Funktion (button_callback) (siehe button_callback),
sowie dem value, der angibt, ob der Button aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit itemOn und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit ItemOff und color.getItemColor().
RectButton(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value):
2 Button(button_callback, longpress_callback, value),
3 color(color),
4 itemOn(Display::createItem(itemOn, color.getItemColor())),
5 itemOff(Display::createItem(itemOff, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Button (keinen Switch) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Item
für die aktivierte (itemOn) und deaktivierte (itemOff) Form des Buttons, eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Button Callback Funktion (button_callback) (siehe button_callback),
eine Longpress Callback Funktion (longpress_callback) (siehe longpress_callback), sowie dem value, der angibt, ob der Button aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit itemOn und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit ItemOff und color.getItemColor().
RectButton(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value):
2 Button(switch_callback, value),
3 color(color),
4 itemOn(Display::createItem(itemOn, color.getItemColor())),
5 itemOff(Display::createItem(itemOff, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Switch (keinen Button) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Item
für die aktivierte (itemOn) und deaktivierte (itemOff) Form des Switches, eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Switch Callback Funktion (switch_callback) (siehe switch_callback),
sowie dem value, der angibt, ob der Switch aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit itemOn und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit ItemOff und color.getItemColor().
RectButton(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* itemOn, const char* itemOff, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value):
2 Button(switch_callback, longpress_callback, value),
3 color(color),
4 itemOn(Display::createItem(itemOn, color.getItemColor())),
5 itemOff(Display::createItem(itemOff, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Switch (keinen Button) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Item
für die aktivierte (itemOn) und deaktivierte (itemOff) Form des Switches, eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Switch Callback Funktion (switch_callback) (siehe switch_callback),
eine Longpress Callback Funktion (longpress_callback) (siehe longpress_callback), sowie dem value, der angibt, ob der Button aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit itemOn und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit ItemOff und color.getItemColor().
RectButton(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, ExternalButtonValue* const value):
2 Button(button_callback, value),
3 color(color),
4 itemOn(Display::createItem(item, color.getItemColor())),
5 itemOff(Display::createItem(item, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Button (keinen Switch) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Items,
welche für sowohl die aktivierte und deaktivierte Form des Buttons verwendet wird (item), eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Button Callback Funktion (button_callback) (siehe button_callback),
sowie dem value, der angibt, ob der Button aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit item und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit item und color.getItemColor().
RectButton(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void()> button_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value):
2 Button(button_callback, longpress_callback, value),
3 color(color),
4 itemOn(Display::createItem(item, color.getItemColor())),
5 itemOff(Display::createItem(item, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Button (keinen Switch) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Items,
welche für sowohl die aktivierte und deaktivierte Form des Buttons verwendet wird (item), eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Button Callback Funktion (button_callback) (siehe button_callback),
eine Longpress Callback Funktion (longpress_callback) (siehe longpress_callback),
sowie dem value, der angibt, ob der Button aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit item und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit Item und color.getItemColor().
RectButton(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, ExternalButtonValue* const value):
2 Button(switch_callback, value),
3 color(color),
4 itemOn(Display::createItem(item, color.getItemColor())),
5 itemOff(Display::createItem(item, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Switch (keinen Button) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Items,
welche für sowohl die aktivierte und deaktivierte Form des Switches verwendet wird (item), eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Switch Callback Funktion (switch_callback) (siehe switch_callback),
sowie dem value, der angibt, ob der Switch aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit item und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit Item und color.getItemColor().
RectButton(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value)¶
1Button_Rect::Button_Rect(const char* item, const Color& color, const uint8_t borderSize, const uint8_t borderRadius, const std::function<void(bool)> switch_callback, const std::function<void()> longpress_callback, ExternalButtonValue* const value):
2 Button(switch_callback, longpress_callback, value),
3 color(color),
4 itemOn(Display::createItem(item, color.getItemColor())),
5 itemOff(Display::createItem(item, color.getSecondaryItemColor())),
6 borderRadius(borderRadius),
7 borderSize(borderSize)
8 {}
Diese Funktion ist ein Konstruktor, der einen eckigen Switch (keinen Button) erzeugt. Als Parameter nimmt der Konstruktor einen String für ein Erzeugung eines Items,
welche für sowohl die aktivierte und deaktivierte Form des Switches verwendet wird (item), eine Farbe (color), die Breite der Umrandung (borderSize),
den gewünschten Krümmungsradius der Ecken (borderRadius), eine Switch Callback Funktion (switch_callback) (siehe switch_callback),
eine Longpress Callback Funktion (longpress_callback) (siehe longpress_callback),
sowie dem value, der angibt, ob der Switch aktiviert ist oder nicht.
In der Initialisierungsliste wird zum einen dieser Button Konstruktor aufgerufen, zum anderen erfolgt die Initialisierung von color, borderRadius und
borderSize mit den korrespondierenden Parametern.
Für die Initialisierung von itemOn erfolgt ein Funktionsaufruf von createItem mit item und
color.getItemColor() und für itemOff erfolgt ebenfalls
ein Funktionsaufruf von createItem, aber diesmal mit Item und color.getItemColor().
~RectButton()¶
1Button_Rect::~Button_Rect() {
2 delete itemOn;
3 delete itemOff;
4}
Dieser Destruktor löscht die itemOn und itemOff Objekte und gibt den allokierten Speicherplatz wieder frei.
void draw() override¶
1void Button_Rect::draw() {
2 if (value){
3 display->rect_center(posX + sizeX/2, posY + sizeY/2, sizeX - t, sizeY - t, borderSize, borderRadius, color.getBorderColor(), color);
4
5 if (externalValue && externalValue->hasItemOn()) display->drawItem(posX + sizeX/2, posY + sizeY/2, externalValue->getItemOn());
6 else display->drawItem(posX + sizeX/2, posY + sizeY/2, itemOn);
7
8 } else {
9 display->rect_center(posX + sizeX/2, posY + sizeY/2, sizeX - t, sizeY - t, borderSize, borderRadius, color.getSecondaryBorderColor(), color.getSecondaryColor());
10
11 if (externalValue && externalValue->hasItemOff()) display->drawItem(posX + sizeX/2, posY + sizeY/2, externalValue->getItemOff());
12 else display->drawItem(posX + sizeX/2, posY + sizeY/2, itemOff);
13 }
14}
Diese Funktion zeichnet Objekte der Button_Rect Klasse auf display.
if (value){
Dafür wird zuerst geprüft, ob value true ist, also ob der Button sich im angeschalteten Zustand befindet.
display->rect_center(posX + sizeX/2, posY + sizeY/2, sizeX - t, sizeY - t, borderSize, borderRadius, color.getBorderColor(), color);
if (externalValue && externalValue->hasItemOn()) display->drawItem(posX + sizeX/2, posY + sizeY/2, externalValue->getItemOn());
else display->drawItem(posX + sizeX/2, posY + sizeY/2, itemOn);
Wenn ja, wird mit auf dem display die rect_center Funktion aufgerufen und die Grundform des Button_Rect Objektes gezeichnet.
Sollte zudem ein externalValue mit einem Item (hasItemOn) existieren, so wird das itemOn
des externalValue mit drawItem gezeichnet. Andernfalls wird das itemOn des Objektes gezeichnet
auf das Rechteck gezeichnet.
} else {
display->rect_center(posX + sizeX/2, posY + sizeY/2, sizeX - t, sizeY - t, borderSize, borderRadius, color.getSecondaryBorderColor(), color.getSecondaryColor());
if (externalValue && externalValue->hasItemOff()) display->drawItem(posX + sizeX/2, posY + sizeY/2, externalValue->getItemOff());
else display->drawItem(posX + sizeX/2, posY + sizeY/2, itemOff);
}
Ist value hingegen false, wird der Button in seinem asugeschalteten Zustand gezeichnet. Der Ablauf ist ähnlich wie im vorherigen Absatz.
uint16_t getHeight()¶
1uint16_t Button_Rect::getHeight(){
2 return sizeX;
3}
Gibt sizeX aus.
uint16_t getWidth()¶
1uint16_t Button_Rect::getWidth(){
2 return sizeY;
3}
Gibt sizeY aus.
bool checkSize(uint16_t sizeX, uint16_t sizeY, uint8_t rotation) override¶
1bool Button_Rect::checkSize(uint16_t sizeX, uint16_t sizeY, uint8_t rotation) {
2 // TODO: anpassen
3 const uint8_t offset = t - borderSize*2;
4 itemOn->setResolution(sizeX - offset, sizeY - offset);
5 itemOff->setResolution(sizeX - offset, sizeY - offset);
6 return sizeX > 30 && sizeY > 30;
7}
Diese Funktion überprüft, ob Objekte der Button_Rect Klasse zeichenbar sind, oder zu klein sind, um sie anzuzeigen. Außerdem legt
sie Auflösung bzw. Größe von itemOn und itemOff auf dem Objekt fest.
Die Parameter der Funktion sind die Höhe (sizeY) und Breite des Objektes (sizeX).
const uint8_t offset = t - borderSize*2;
Dafür wird zuerst ein offset berechnet, welcher den Abstand zwischen den Items itemOn und itemOff zur Umrandung des Objektes
festlegt.
itemOn->setResolution(sizeX - offset, sizeY - offset);
itemOff->setResolution(sizeX - offset, sizeY - offset);
Mithilfe von offset wird nun die Auflösung der beiden Items durch den Funktionsaufruf von itemsetresolution bestimmt.
return sizeX > 30 && sizeY > 30;
Sollte jedoch sizeX > 30 && sizeY > 30 nicht gelten, so ist das Objekt nicht groß genug, um es auf dem Display anzuzeigen. Die Funktion gibt false zurück.
Variablen und Konstanten Beschreibung¶
const Color color¶
Die Farbe (Color) des Objektes.
Item* itemOn¶
Das Item (Item), das auf dem Objekt im angeschalteten Zustand angezeigt wird.
Item* itemOff¶
Das Item (Item), das auf dem Objekt im ausgeschalteten Zustand angezeigt wird.
const uint8_t borderRadius¶
Gibt den Krümmungsgrad der Ecken des Rechteckes (also der Grundform des Objeketes) an.
const uint8_t borderSize¶
Gibt an, wie dick die Umrandung ist.