daisy::OneBitGraphicsDisplayImpl¶
#include <display.h>
Inherits from daisy::OneBitGraphicsDisplay
Public Functions¶
Name | |
---|---|
OneBitGraphicsDisplayImpl() | |
virtual | ~OneBitGraphicsDisplayImpl() |
virtual void | DrawLine(uint_fast8_t x1, uint_fast8_t y1, uint_fast8_t x2, uint_fast8_t y2, bool on) override |
virtual void | DrawRect(uint_fast8_t x1, uint_fast8_t y1, uint_fast8_t x2, uint_fast8_t y2, bool on, bool fill =false) override |
virtual void | DrawArc(uint_fast8_t x, uint_fast8_t y, uint_fast8_t radius, int_fast16_t start_angle, int_fast16_t sweep, bool on) override |
virtual char | WriteChar(char ch, FontDef font, bool on) override |
virtual char | WriteString(const char * str, FontDef font, bool on) override |
virtual Rectangle | WriteStringAligned(const char * str, const FontDef & font, Rectangle boundingBox, Alignment alignment, bool on) override |
Additional inherited members¶
Public Functions inherited from daisy::OneBitGraphicsDisplay
Name | |
---|---|
OneBitGraphicsDisplay() | |
virtual | ~OneBitGraphicsDisplay() |
virtual uint16_t | Height() const =0 |
virtual uint16_t | Width() const =0 |
Rectangle | GetBounds() const |
size_t | CurrentX() |
size_t | CurrentY() |
virtual void | Fill(bool on) =0 |
virtual void | DrawPixel(uint_fast8_t x, uint_fast8_t y, bool on) =0 |
void | DrawCircle(uint_fast8_t x, uint_fast8_t y, uint_fast8_t radius, bool on) |
void | SetCursor(uint16_t x, uint16_t y) |
virtual void | Update() =0 |
Protected Attributes inherited from daisy::OneBitGraphicsDisplay
Name | |
---|---|
uint16_t | currentX_ |
uint16_t | currentY_ |
Detailed Description¶
This class is intended as a intermediary class for your actual implementation of the OneBitGraphicsDisplay interface. It uses the CRTP design pattern where the template argument is the child class. It provides implementations for most of the functions, except DrawPixel(), Update() and Fill(), which you'll have to provide in your child class. The main goal of this class is to provide common drawing functions without relying on massive amounts of virtual function calls that would result in a performance loss. To achieve this, any drawing function that is implemented here and internally calls other drawing functions (e.g. DrawRect() which internally calls DrawPixel() and DrawLine()) makes these calls via the qualified name of these functions to explicitly suppress the virtual dispatch mechanism like this:
To create a custom OneBitGraphicsDisplay implementation, you can A) inherit from OneBitGraphicsDisplay directly and provide all the drawing functions yourself B) Inherit from OneBitGraphicsDisplayImpl and only provide DrawPixel(), Fill() and Update() like this:
class MyDisplayClass : public OneBitGraphicsDisplayImpl
Public Functions Documentation¶
function OneBitGraphicsDisplayImpl¶
function ~OneBitGraphicsDisplayImpl¶
function DrawLine¶
inline virtual void DrawLine(
uint_fast8_t x1,
uint_fast8_t y1,
uint_fast8_t x2,
uint_fast8_t y2,
bool on
) override
Parameters:
- x1 x Coordinate of the starting point
- y1 y Coordinate of the starting point
- x2 x Coordinate of the ending point
- y2 y Coordinate of the ending point
- on on or off
Reimplements: daisy::OneBitGraphicsDisplay::DrawLine
Draws a line from (x1, y1) to (y1, y2)
function DrawRect¶
inline virtual void DrawRect(
uint_fast8_t x1,
uint_fast8_t y1,
uint_fast8_t x2,
uint_fast8_t y2,
bool on,
bool fill =false
) override
Parameters:
- x1 x Coordinate of the first point
- y1 y Coordinate of the first point
- x2 x Coordinate of the second point
- y2 y Coordinate of the second point
- on on or off
- fill fill the rectangle or draw only the outline
Reimplements: daisy::OneBitGraphicsDisplay::DrawRect
Draws a rectangle based on two coordinates.
function DrawArc¶
inline virtual void DrawArc(
uint_fast8_t x,
uint_fast8_t y,
uint_fast8_t radius,
int_fast16_t start_angle,
int_fast16_t sweep,
bool on
) override
Parameters:
- x x Coordinate of the center of the arc
- y y Coordinate of the center of the arc
- radius radius of the arc
- start_angle angle where to start the arc
- sweep total angle of the arc
- on on or off
Reimplements: daisy::OneBitGraphicsDisplay::DrawArc
Draws an arc around the specified coordinate
function WriteChar¶
Parameters:
- ch character to be written
- font font to be written in
- on on or off
Return: &
Reimplements: daisy::OneBitGraphicsDisplay::WriteChar
Writes the character with the specific FontDef to the display buffer at the current Cursor position.
function WriteString¶
Parameters:
- str string to be written
- font font to use
- on on or off
Return: &
Reimplements: daisy::OneBitGraphicsDisplay::WriteString
Similar to WriteChar, except it will handle an entire String. Wrapping does not happen automatically, so the width of the string must be kept within the dimensions of the screen.
function WriteStringAligned¶
inline virtual Rectangle WriteStringAligned(
const char * str,
const FontDef & font,
Rectangle boundingBox,
Alignment alignment,
bool on
) override
Parameters:
- str string to be written
- font font to use
- boundingBox the bounding box to draw the text in
- alignment the alignment to use
- on on or off
Return: The rectangle that was drawn to
Reimplements: daisy::OneBitGraphicsDisplay::WriteStringAligned
Similar to WriteString but justified within a bounding box.
---¶
Updated on 2024-01-03 at 19:41:00 +0000