EX-Display
EX-Display
|
Class to abstract away all physical display implementation to enable multiple display types. More...
#include <DisplayInterface.h>
Public Member Functions | |
virtual void | begin ()=0 |
Perform any initial once off setup or configuration here and call only once. | |
virtual void | clearScreen ()=0 |
Clear the entire screen. | |
virtual void | displayScreen (Screen *screen)=0 |
Display the specified Screen on this display. | |
virtual void | displayStartupInfo (const char *version)=0 |
Display the startup screen with software version. | |
virtual void | displayFormattedRow (uint8_t row, uint8_t column, RowAttributes attributes, const char *text, bool append)=0 |
Display a row using formatting modifiers. | |
void | setNext (DisplayInterface *display) |
Set the next DisplayInterface derived instance in the list. | |
DisplayInterface * | getNext () |
Get the next DisplayInterface derived instance in the list. | |
void | setLogger (Logger *logger) |
Set the logger instance to use for diagnostic logging. | |
void | setId (uint8_t displayId) |
Set the ID for this display instance. | |
uint8_t | getId () |
Get the ID of this display instance. | |
void | setScreenId (int screenId) |
Set the Screen ID this display is currently displaying. | |
int | getScreenId () |
Get the Screen ID this display is currently displaing. | |
int | getCSPin () |
Get the defined CS pin for this display to see if it needs manual SPI switching. | |
void | setNeedsRedraw (bool redraw) |
Set the flag for whether this display needs redrawing or not - individual row updates are not affected. | |
bool | needsRedraw () |
Test if this display needs an entire redraw. | |
void | formatRow (int row, const char *text) |
Static method to enable calling back to a derived class with a formatted row. | |
virtual | ~DisplayInterface ()=default |
Destructor for a DisplayInterface. | |
Protected Member Functions | |
RowAttributes | _sanitiseAttributes (RowAttributes attributes) |
Sanitise the provided struct of RowAttributes. | |
bool | _isModifier (char check) |
Validates the provided char is a valid modifier. | |
RowAttributes | _setAttribute (RowAttributes attributes, char modifier, uint16_t colour=0xFFFF) |
Update the provided RowAttributes struct according to the provided modifier. | |
bool | _isRGB (const char *colour) |
Check if the provided string constant translates to a valid RGB colour code. | |
uint16_t | _convertRGBtoRGB565 (const char *colour) |
Convert the provided RGB colour code string constant to a uint16_t RGB565 colour. | |
Protected Attributes | |
DisplayInterface * | _next = nullptr |
Pointer to the next DisplayInterface derived instance in the list. | |
uint16_t | _textColour |
Default text colour for the display. | |
uint16_t | _backgroundColour |
Default background colour for the display. | |
Logger * | _logger = nullptr |
Pointer to the Logger instance for the DisplayInterface derived classes. | |
uint8_t | _displayId = 0 |
ID for this display instance. | |
int | _screenId = -1 |
ID of the screen this display is currently displaying, defaults to -1 to flag it is not a valid ID. | |
uint8_t | _rotation = 0 |
Orientation of this display, most displays require this setting otherwise ignore it. | |
uint8_t | _textSize = 1 |
Multiplier for text size, most displays require this setting otherwise ignore it. | |
uint8_t | _maxRow = 0 |
Maximum row number (not count) that will fit on this display (based on font height, not pixels) | |
uint8_t | _maxColumn = 0 |
Maximum column number (not count) that will fit on this display (based on font width, not pixels) | |
uint8_t | _fontHeight = 0 |
Calculated font height to determine row positioning. | |
uint8_t | _fontWidth = 0 |
Calculated font width to determine column positioning. | |
int | _csPin = -1 |
If there are more than one SPI displays that libraries don't officially support, the CS pin can be provided to switch between them (default -1 disables this) | |
bool | _needsRedraw = true |
Flag that this display needs redrawing - needed for switching between screens. | |
Class to abstract away all physical display implementation to enable multiple display types.
|
virtualdefault |
Destructor for a DisplayInterface.
|
protected |
Convert the provided RGB colour code string constant to a uint16_t RGB565 colour.
colour | String constant containing the RGB colour code |
|
protected |
Validates the provided char is a valid modifier.
check | Contains the char to be validated |
|
protected |
Check if the provided string constant translates to a valid RGB colour code.
colour | String constant containing RGB colour codes to check |
|
protected |
Sanitise the provided struct of RowAttributes.
If isLine is set, all other attributes except colour are overridden to false. If both alwaysTicker and neverTicker are set, both will be set to false as they conflict.
attributes | RowAttributes struct to sanitise |
|
protected |
Update the provided RowAttributes struct according to the provided modifier.
attributes | RowAttribute to be updated |
modifier | Modifier to apply |
colour | If applied modifier is colour, set this 16bit colour, otherwise this is ignored |
|
pure virtual |
Perform any initial once off setup or configuration here and call only once.
Implemented in TFT_eSPIDisplay.
|
pure virtual |
Clear the entire screen.
Implemented in TFT_eSPIDisplay.
|
pure virtual |
Display a row using formatting modifiers.
row | Row ID to display |
column | Column at which to display text (not pixels) |
attributes | RowAttributes structure containing modifier details |
text | Text to display |
append | Flag if this is appending to an existing row and should not clear the row first |
Implemented in TFT_eSPIDisplay.
|
pure virtual |
Display the specified Screen on this display.
screen | Pointer to the Screen to display |
Implemented in TFT_eSPIDisplay.
|
pure virtual |
Display the startup screen with software version.
version | EX-Display version |
Implemented in TFT_eSPIDisplay.
void DisplayInterface::formatRow | ( | int | rowId, |
const char * | text | ||
) |
Static method to enable calling back to a derived class with a formatted row.
row | Row to display |
text | Text containing formatting |
Valid uses of modifiers: "`_`This is an underlined row" "`-`This is a horizontal line, text will be ignored" "`~`This row will always ticker when implemented" "`!`This row will never ticker when implemented" "`#FF0000`This row has red text" "`_``~`This row is underlined, will always ticker, and `#FF0000`this bit of text is red" "`!``_`This row is underlined, and will never ticker" "`#FF0000`This row starts red, then goes `#FFFFFF`white"
row | Row to display |
text | Text containing formatting |
stateMachine enum allows us to iterate through each char of text and examine it byte by byte for modifiers.
Length of the provided text, we can't return anything longer than this
Starting index of text we need to return, enables subtracting modifiers
Size of text to copy into textOnly later
Default start at column 0, needs to be updated if appending
Default is a new row, update if colours are embedded
Text only minus any modifiers, no bigger than provided size
Holds each char for checking
Start by looking for the first backtick
Set all attributes false to start with, and white text
int DisplayInterface::getCSPin | ( | ) |
Get the defined CS pin for this display to see if it needs manual SPI switching.
uint8_t DisplayInterface::getId | ( | ) |
Get the ID of this display instance.
DisplayInterface * DisplayInterface::getNext | ( | ) |
Get the next DisplayInterface derived instance in the list.
int DisplayInterface::getScreenId | ( | ) |
bool DisplayInterface::needsRedraw | ( | ) |
Test if this display needs an entire redraw.
void DisplayInterface::setId | ( | uint8_t | displayId | ) |
Set the ID for this display instance.
displayId | ID of this display |
void DisplayInterface::setLogger | ( | Logger * | logger | ) |
Set the logger instance to use for diagnostic logging.
logger | Pointer to the Logger instance to use |
void DisplayInterface::setNeedsRedraw | ( | bool | redraw | ) |
Set the flag for whether this display needs redrawing or not - individual row updates are not affected.
redraw | true if entire redraw, otherwise false |
void DisplayInterface::setNext | ( | DisplayInterface * | display | ) |
Set the next DisplayInterface derived instance in the list.
display | Pointer to the next instance |
void DisplayInterface::setScreenId | ( | int | screenId | ) |
|
protected |
Default background colour for the display.
|
protected |
If there are more than one SPI displays that libraries don't officially support, the CS pin can be provided to switch between them (default -1 disables this)
|
protected |
ID for this display instance.
|
protected |
Calculated font height to determine row positioning.
|
protected |
Calculated font width to determine column positioning.
|
protected |
Pointer to the Logger instance for the DisplayInterface derived classes.
|
protected |
Maximum column number (not count) that will fit on this display (based on font width, not pixels)
|
protected |
Maximum row number (not count) that will fit on this display (based on font height, not pixels)
|
protected |
Flag that this display needs redrawing - needed for switching between screens.
|
protected |
Pointer to the next DisplayInterface derived instance in the list.
|
protected |
Orientation of this display, most displays require this setting otherwise ignore it.
|
protected |
ID of the screen this display is currently displaying, defaults to -1 to flag it is not a valid ID.
|
protected |
Default text colour for the display.
|
protected |
Multiplier for text size, most displays require this setting otherwise ignore it.