C++ DevKit
C++ set of OOP library
Loading...
Searching...
No Matches
TextWidget Class Reference

a dedicated class for text frame only More...

#include <widget.h>

Inheritance diagram for TextWidget:
Inheritance graph
Collaboration diagram for TextWidget:
Collaboration graph

Public Member Functions

struct_ConfigTextWidget get_text_frame_config ()
 Get the text frame config object.
 
 TextWidget (GraphicDisplayDevice *graphic_display_screen, struct_ConfigTextWidget text_cfg, CanvasFormat canvas_format, Model *displayed_object=nullptr)
 The max number of line with respect to frame height and font height.
 
 TextWidget (GraphicDisplayDevice *graphic_display_screen, struct_ConfigTextWidget text_cfg, CanvasFormat canvas_format, size_t frame_width, size_t frame_height, Model *displayed_object=nullptr)
 Construct a new Text Widget object.
 
virtual ~TextWidget ()
 the destructor of TextWidget
 
void update_text_frame_size (const unsigned char *font)
 Compute the text size in column x line according to the size of the font and the size of the frame in pixel. Delete the previous text buffer if any and create a new buffer.
 
void clear_text_buffer ()
 et text buffer memory to "0" and set character current line and column to 0
 
void update_canvas_buffer_size (const unsigned char *font)
 compute canvas width and height according to the size of the text (column x line ) and the size of the bitmap font. Delete the previous pixel buffer if any and create a new buffer.
 
void write ()
 process characters in the internal text buffer and draw it into the pixel buffer.
 
void write (const char *c_str)
 process the string c_str and then draw each character into the pixel buffer, without using the text buffer.
 
void process_char (char character)
 interpret the character and draw it into the pixel buffer at the current line and column character position.
 
void next_line ()
 character line steps one position downward.
 
void next_char ()
 character column steps forward one position forward.
 
void draw ()
 we need draw() to be compliant with the pure virtual draw() inherited from Widget.
 
void draw_border (ColorIndex color=ColorIndex::WHITE)
 draw a one-pixel width around the the frame
 
- Public Member Functions inherited from GraphicWidget
void update_widget_anchor (uint8_t x, uint8_t y)
 Modify the anchor of the widget on the display screen.
 
void show ()
 A short way to call GraphicDisplayDevice::show(&canvas, anchor x, anchor y)
 
void send_image_to_DisplayGateKeeper (QueueHandle_t display_queue, SemaphoreHandle_t sending_done)
 used with FreeRTOS. send the widget data_to_display structure to the task in charge of the display management
 
 GraphicWidget (GraphicDisplayDevice *graphic_display_screen, struct_ConfigGraphicWidget graph_cfg, CanvasFormat canvas_format, Model *displayed_object=nullptr)
 Construct a new Graphic Widget object.
 
 GraphicWidget (GraphicDisplayDevice *graphic_display_screen, struct_ConfigTextWidget text_cfg, CanvasFormat canvas_format, Model *displayed_object=nullptr)
 Construct a new Graphic Widget object from the TextWidget Constructor.
 
 GraphicWidget (GraphicDisplayDevice *graphic_display_screen, struct_ConfigTextWidget text_cfg, CanvasFormat canvas_format, size_t frame_width, size_t frame_height, Model *displayed_object=nullptr)
 Construct a new Graphic Widget object from the TextWidget Constructor.
 
virtual ~GraphicWidget ()
 Destroy the Widget object.
 
struct_ConfigGraphicWidget get_graph_frame_config ()
 Get the graphic frame config object.
 
void hline (uint8_t x, uint8_t y, size_t w, ColorIndex color=ColorIndex::WHITE)
 Draw a color horizontal line, starting at frame position (x,y), on w number of pixel.
 
void vline (uint8_t x, uint8_t y, size_t h, ColorIndex color=ColorIndex::WHITE)
 Draw a color vertical line, starting at frame position (x,y), on w number of pixel.
 
void line (int x0, int y0, int x1, int y1, ColorIndex color=ColorIndex::WHITE)
 Draw a color line, starting at frame position (x0,y0), ending at frame position (x1,y1)
 
void rect (uint8_t start_x, uint8_t start_y, size_t w, size_t h, bool fill=false, ColorIndex color=ColorIndex::WHITE)
 Draw a rectangle, starting at frame position (x,y), w wide and h high.
 
void circle (int radius, int x_center, int y_center, bool fill=false, ColorIndex color=ColorIndex::WHITE)
 draw a cercle of size radius, centered at (x_center, y_center) https://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_d%27arc_de_cercle_de_Bresenham https://en.wikipedia.org/wiki/Midpoint_circle_algorithm procédure tracerCercle (entier rayon, entier x_centre, entier y_centre) déclarer entier x, y, m ; x ← 0 ; y ← rayon ; // on se place en haut du cercle m ← 5 - 4*rayon ; // initialisation Tant que x <= y // tant qu'on est dans le second octant tracerPixel( x+x_centre, y+y_centre ) ; tracerPixel( y+x_centre, x+y_centre ) ; tracerPixel( -x+x_centre, y+y_centre ) ; tracerPixel( -y+x_centre, x+y_centre ) ; tracerPixel( x+x_centre, -y+y_centre ) ; tracerPixel( y+x_centre, -x+y_centre ) ; tracerPixel( -x+x_centre, -y+y_centre ) ; tracerPixel( -y+x_centre, -x+y_centre ) ; si m > 0 alors //choix du point F y ← y - 1 ; m ← m - 8*y ; fin si ; x ← x + 1 ; m ← m + 8*x + 4 ; fin tant que ; fin de procédure ;
 
- Public Member Functions inherited from Widget
 Widget (Model *actual_displayed_model, DisplayDevice *graphic_display_device=nullptr)
 contructor for generic widget
 
void add_widget (Widget *_sub_widget)
 add sub_widget to the current widget
 
void set_display_device (DisplayDevice *_new_display_device)
 Set the display screen object.
 

Public Attributes

uint8_t number_of_column {0}
 The max number of line with respect to frame height and font height.
 
uint8_t number_of_line {0}
 The max number of column with respect to frame width and font width.
 
size_t text_buffer_size
 size of the buffer that contains text as string of characters.
 
char * text_buffer = nullptr
 the buffer where text are written
 
- Public Attributes inherited from GraphicWidget
Canvascanvas
 the associated canvas in which the widget writes text and draws graphics
 
uint8_t widget_anchor_x
 location in x of the widget within the hosting framebuffer
 
uint8_t widget_anchor_y
 location in y of the widget within the hosting framebuffer
 
struct_DataToShow data_to_display
 the data structure used to send the canvas to the display task when a FreeRTOS queue is used.
 

Protected Member Functions

void create_text_buffer ()
 create text buffer and delete the old one if already existing
 
- Protected Member Functions inherited from GraphicWidget
void clear_widget ()
 fill the graphic pixel buffer with 0x00.
 
virtual void get_value_of_interest ()=0
 A pure virtual method that results in the transfer of the displayed values of the displayed model to the widget.
 

Additional Inherited Members

- Protected Attributes inherited from GraphicWidget
bool widget_with_border {false}
 if true, the widget is surrounded by a one-pixel border
 
size_t widget_width {128}
 As a widget can be surrounded by a border, the actual widget width is not the associated framebuffer width.
 
size_t widget_height {8}
 As a widget can be surrounded by a border, the actual widget height is not the associated framebuffer height.
 
uint8_t widget_start_x
 this is the actual horizontal start of the widget drawing area, taken into account the presence of border.
 
uint8_t widget_start_y
 this is the actual vertical start of the widget drawing area, taken into account the presence of border.
 
uint8_t widget_border_width
 this is the border size of the widget. 0 if no border, 1 if border
 
- Protected Attributes inherited from Widget
DisplayDevicedisplay_device {nullptr}
 the display device where the attached to the frame buffer
 
Modelactual_displayed_model {nullptr}
 a pointer to the Model actually displayed by the widget
 
std::vector< Widget * > widgets
 A widget can be composed by several widgets.
 

Detailed Description

a dedicated class for text frame only

Constructor & Destructor Documentation

◆ TextWidget() [1/2]

TextWidget::TextWidget ( GraphicDisplayDevice * graphic_display_screen,
struct_ConfigTextWidget text_cfg,
CanvasFormat canvas_format,
Model * displayed_object = nullptr )

The max number of line with respect to frame height and font height.

Construct a new Text Widget object

Note
USAGE: when the text frame is defined by the number of characters width and height.
Parameters
graphic_display_screenThe display device on which the widget is drawn
text_cfgthe configuration data for the textual frame
canvas_formatthe format of the associated canvas (see CanvasFormat)
displayed_objectthe displayed model of the widget. Default to nullptr
Here is the call graph for this function:

◆ TextWidget() [2/2]

TextWidget::TextWidget ( GraphicDisplayDevice * graphic_display_screen,
struct_ConfigTextWidget text_cfg,
CanvasFormat canvas_format,
size_t frame_width,
size_t frame_height,
Model * displayed_object = nullptr )

Construct a new Text Widget object.

Note
USAGE: when the text frame is defined by the frame size width and height in pixel.
Parameters
graphic_display_screenThe display device on which the widget is drawn
text_cfgthe configuration data for the textual frame
canvas_formatthe format of the associated canvas (see CanvasFormat)
frame_widththe frame size width
frame_heightthe frame size height
displayed_objectthe displayed model of the widget. Default to nullptr
Here is the call graph for this function:

Member Function Documentation

◆ draw()

void TextWidget::draw ( )
virtual

we need draw() to be compliant with the pure virtual draw() inherited from Widget.

Note
USAGE: It is called by the draw_refresh method of the Model The draw() member calls the following method : 1) clear_text_buffer(); 2) get_value_of_interest(); 3) write(); – transfer characters in text_buffer to pixels in the pixel_buffer 4) draw_border(); 5) show();

Implements Widget.

Here is the call graph for this function:

◆ draw_border()

void TextWidget::draw_border ( ColorIndex color = ColorIndex::WHITE)
virtual

draw a one-pixel width around the the frame

Note
This border can overwrite the characters! To be improve with the use of pixel frame memory not based on byte page such as the OLED SSD1306.
Parameters
color

Reimplemented from GraphicWidget.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_text_frame_config()

struct_ConfigTextWidget TextWidget::get_text_frame_config ( )

Get the text frame config object.

Returns
struct_ConfigTextFramebuffer

◆ process_char()

void TextWidget::process_char ( char character)

interpret the character and draw it into the pixel buffer at the current line and column character position.

Text wrapping is done if wrap flag is true. Character position steps forward according to auto_next_char flag.

Some special characters are processed:

  • "LINE_FEED" (\n 0x0A) : line position steps forward, column position is set to 0.
  • "BACKSPACE" (\b 0x08) : column position steps backward, a space (" ") character is overwritten.
  • "FORM_FEED" (\f 0x0C) : the text buffer is cleared.
  • "CARRIAGE_RETURN" (\r 0x0D) : column position is set to 0.
  • "HORIZONTAL_TAB" (\t 0x09) : " " characters are added according to tab_size configuration value.
    Parameters
    character
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_canvas_buffer_size()

void TextWidget::update_canvas_buffer_size ( const unsigned char * font)

compute canvas width and height according to the size of the text (column x line ) and the size of the bitmap font. Delete the previous pixel buffer if any and create a new buffer.

Parameters
fontthe new font

◆ update_text_frame_size()

void TextWidget::update_text_frame_size ( const unsigned char * font)

Compute the text size in column x line according to the size of the font and the size of the frame in pixel. Delete the previous text buffer if any and create a new buffer.

Parameters
fontthe new font
Here is the call graph for this function:

◆ write() [1/2]

void TextWidget::write ( )

process characters in the internal text buffer and draw it into the pixel buffer.

Note
USAGE: this is useful if we have to fill the text_buffer, e.g. with sprintf and formatted text.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write() [2/2]

void TextWidget::write ( const char * c_str)

process the string c_str and then draw each character into the pixel buffer, without using the text buffer.

Parameters
c_strA C_style character string.
Here is the call graph for this function:

The documentation for this class was generated from the following files: