ErrorScreen

Beschreibung

ErrorScreens sind Screens, die eine Fehlermeldung ausgeben.

Funktionen

ErrorScreen (const char* error_title, const char* error_text)

ErrorScreen (const char* error_title, const char* error_text, const Color& background_color, const Color& text_color)

void

loop (Inputs& input)

void

draw ()

Variablen und Konstanten

const char*

error_title

const char*

error_text

const „Color

background_color

const „Color

text_color

Macros

CREATE_ERROR_SCREEN (TML, screenID, errorTitle, errorMessage)

CREATE_ERROR_SCREEN_with_Colors (TML, screenID, errorTitle, errorMessage, backgroundColor, textColor)

Funktionen Beschreibung

ErrorScreen (const char* error_title, const char* error_text)

1ErrorScreen::ErrorScreen (const char* error_title, const char* error_text):
2        ErrorScreen(error_title, error_text, COLOR_RED, COLOR_BLACK)
3    {}

Der Konstruktor wird bei der Erzeugung eines neuen Objekts der ErrorScreen Klasse aufgerufen. Als Parameter nimmt der Konstruktor den Namen des Fehlers (error_title) und den Text, den der bei der Fehlermeldung ausgegeben werden soll (error_text). Für die Initialisierung wird der andere „ErrorScreen“ Konstruktor aufgerufen, wobei COLOR_RED die Standard Hintergrundfarbe (des Displays) Rot und COLOR_BLACK die Standard Textfarbe Schwarz ist.

ErrorScreen (const char* error_title, const char* error_text, const Color& background_color, const Color& text_color)

1ErrorScreen::ErrorScreen (const char* error_title, const char* error_text, const Color& background_color, const Color& text_color):
2        error_title(error_title),
3        error_text(error_text),
4        background_color(background_color),
5        text_color(text_color)
6    {}
Der Konstruktor wird bei der Erzeugung eines neuen Objekts der ErrorScreen Klasse aufgerufen. Als Parameter nimmt der Konstruktor den Namen des Fehlers (error_title), den der bei der Fehlermeldung ausgegeben werden soll (error_text), die Hintergrundfarbe (background_color), sowie die Textfarbe (text_color). Dieser Konstruktor ermöglicht es, Hintergrund- und Textfarbe individuell festzulegen, anders als bei diesem „ErrorScreen“ Konstruktor.

In der Initialisierungsliste werden die Variablen „error_title“, „error_text“, „background_color“ und „text_color“ mit dem korrespondierenden Parameter initialisiert.

void loop(Inputs& input) override

1void ErrorScreen::loop(Inputs& input) {
2
3}

Diese Funktion hat eine leere loop Funktion, da an einem ErrorScreen nach erstmaligen Zeichnen keine Änderungen vorgenommen werden.

void draw() override

1void ErrorScreen::draw() {
2    display->fillScreen(background_color);
3
4    // TODO: text_size automatisch anpassen (je nach Textlänge) 
5    display->text_center(width/2, height/3, 3, error_title, text_color);
6    display->text_center(width/2, 2*height/3, 1, error_text, text_color);
7}

Diese Funktion überschreibt die „draw“ Funktion der „Screen“ Klasse. Zuerst wird die „fillScreen“ Funktion des „display“ Objektes aufgerufen. Dabei wird „background_color“ als Parameter übergeben. Dadurch wird das Display in die Hintergrundfarbe gefärbt. Anschließend sollen sowohl „error_title“ und „error_text“ auf dem Display zentriert angezeigt werden. Zuerst erfolgt der „text_center“ Funktionsaufruf, bei welchem durch width/2 und height/3error_title“ auf dem Display im oberen Drittel in der Mitte angezeigt wird. Im nächsten „text_center“ Funktionsaufruf wird „error_text“ durch width/2 und height/3 auf dem mittleren Drittel zentral angezeigt.

Variablen und Konstanten Beschreibung

const char* error_title

Diese Variable speichert den Namen einer Fehlermeldung.

const char* error_text

Diese Variable speichert den Text, der bei einer Fehlermeldung ausgeben wird.

const Color background_color

Hier wird die Hintergrundfarbe von Fehlerbildschirmen gespeichert. Die Standard Hintergrundfarbe wird in diesem „ErrorScreen“ Konstruktor festgelegt.

const Color text_color

Hier wird die Textfarbe von Fehlermeldungen gespeichert. Die Standard Textfarbe wird in diesem „ErrorScreen“ Konstruktor festgelegt.

Macro Beschreibung

#define CREATE_ERROR_SCREEN(TML, screenID, errorTitle, errorMessage)

1#define CREATE_ERROR_SCREEN(TML, screenID, errorTitle, errorMessage) \
2    static_assert(std::is_integral<decltype(screenID)>::value && screenID >= 0 && screenID <= UINT8_MAX, "screenID must be of type uint8_t"); \
3    static_assert(std::is_same<decltype(TML), TouchMenuLib>::value, "TML must be of type TouchMenuLib"); \
4    static_assert(std::is_convertible<decltype(errorMessage), const char*>::value, "errorMessage must be of type const char*"); \
5    static_assert(std::is_convertible<decltype(errorTitle), const char*>::value, "errorTitle must be of type const char*"); \
6    TML.add(screenID, new ErrorScreen(errorTitle, errorMessage));

Dieses Macro erleichtert das Erstellen von Instanzen der ErrorScreen Klasse.

#define CREATE_ERROR_SCREEN_with_Colors(TML, screenID, errorTitle, errorMessage, backgroundColor, textColor)

1#define CREATE_ERROR_SCREEN_with_Colors(TML, screenID, errorTitle, errorMessage, backgroundColor, textColor) \
2    static_assert(std::is_integral<decltype(screenID)>::value && screenID >= 0 && screenID <= UINT8_MAX, "screenID must be of type uint8_t"); \
3    static_assert(std::is_same<decltype(TML), TouchMenuLib>::value, "TML must be of type TouchMenuLib"); \
4    static_assert(std::is_convertible<decltype(errorMessage), const char*>::value, "errorMessage must be of type const char*"); \
5    static_assert(std::is_convertible<decltype(errorTitle), const char*>::value, "errorTitle must be of type const char*"); \
6    static_assert(std::is_same<decltype(backgroundColor), Color>::value, "backgroundColor must be of type Color"); \
7    static_assert(std::is_same<decltype(textColor), Color>::value, "textColor must be of type Color"); \
8    ErrorScreen* screen##screenID = new ErrorScreen(errorTitle, errorMessage, backgroundColor, textColor); \
9    TML.add(screenID, screen##screenID);