lv_draw_label.h

Defines

LV_DRAW_LABEL_NO_TXT_SEL

Typedefs

typedef void (*lv_draw_glyph_cb_t)(lv_draw_task_t *t, lv_draw_glyph_dsc_t *dsc, lv_draw_fill_dsc_t *fill_dsc, const lv_area_t *fill_area)

Passed as a parameter to lv_draw_label_iterate_characters to draw the characters one by one

Param t:

pointer to a draw task

Param dsc:

pointer to lv_draw_glyph_dsc_t to describe the character to draw if NULL don't draw character

Param fill_dsc:

pointer to a fill descriptor to draw a background for the character or underline or strike through if NULL do not fill anything

Param fill_area:

the area to fill if NULL do not fill anything

Functions

void lv_draw_letter_dsc_init(lv_draw_letter_dsc_t *dsc)
void lv_draw_label_dsc_init(lv_draw_label_dsc_t *dsc)

Initialize a label draw descriptor

Parameters:

dsc – pointer to a draw descriptor

lv_draw_label_dsc_t *lv_draw_task_get_label_dsc(lv_draw_task_t *task)

Try to get a label draw descriptor from a draw task.

Parameters:

task – draw task

Returns:

the task's draw descriptor or NULL if the task is not of type LV_DRAW_TASK_TYPE_LABEL

void lv_draw_glyph_dsc_init(lv_draw_glyph_dsc_t *dsc)

Initialize a glyph draw descriptor. Used internally.

Parameters:

dsc – pointer to a draw descriptor

void lv_draw_label(lv_layer_t *layer, const lv_draw_label_dsc_t *dsc, const lv_area_t *coords)

Create a draw task to render a text

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to draw descriptor

  • coords – coordinates of the character

void lv_draw_character(lv_layer_t *layer, lv_draw_label_dsc_t *dsc, const lv_point_t *point, uint32_t unicode_letter)

Create a draw task to render a single character

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to draw descriptor

  • point – position of the label

  • unicode_letter – the letter to draw

void lv_draw_letter(lv_layer_t *layer, lv_draw_letter_dsc_t *dsc, const lv_point_t *point)

Draw a single letter

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to draw descriptor

  • point – position of the label

void lv_draw_label_iterate_characters(lv_draw_task_t *t, const lv_draw_label_dsc_t *dsc, const lv_area_t *coords, lv_draw_glyph_cb_t cb)

Should be used during rendering the characters to get the position and other parameters of the characters

Parameters:
  • t – pointer to a draw task

  • dsc – pointer to draw descriptor

  • coords – coordinates of the label

  • cb – a callback to call to draw each glyphs one by one

void lv_draw_unit_draw_letter(lv_draw_task_t *t, lv_draw_glyph_dsc_t *dsc, const lv_point_t *pos, const lv_font_t *font, uint32_t letter, lv_draw_glyph_cb_t cb)

Draw a single letter using the provided draw unit, glyph descriptor, position, font, and callback.

This function is responsible for rendering a single character from a text string, applying the necessary styling described by the glyph descriptor (dsc). It handles the retrieval of the glyph's description, checks its visibility within the clipping area, and invokes the callback (cb) to render the glyph at the specified position (pos) using the given font (font).

Parameters:
  • t – Pointer to the drawing task.

  • dsc – Pointer to the descriptor containing styling for the glyph to be drawn.

  • pos – Pointer to the point coordinates where the letter should be drawn.

  • font – Pointer to the font containing the glyph.

  • letter – The Unicode code point of the letter to be drawn.

  • cb – Callback function to execute the actual rendering of the glyph.

struct lv_draw_label_dsc_t

Public Members

lv_draw_dsc_base_t base
const char *text

The text to draw

const lv_font_t *font

The font to use. Fallback fonts are also handled.

lv_color_t color

Color of the text

int32_t line_space

Extra space between the lines

int32_t letter_space

Extra space between the characters

int32_t ofs_x

Offset the text with this value horizontally

int32_t ofs_y

Offset the text with this value vertically

int32_t rotation

Rotation of the letters in 0.1 degree unit

uint32_t sel_start

The first characters index for selection (not byte index). LV_DRAW_LABEL_NO_TXT_SEL for no selection

uint32_t sel_end

The last characters's index for selection (not byte index). LV_DRAW_LABEL_NO_TXT_SEL for no selection

lv_color_t sel_color

Color of the selected characters

lv_color_t sel_bg_color

Background color of the selected characters

uint32_t text_length

The number of characters to render. 0: means render until reaching the \0 termination.

lv_opa_t opa

Opacity of the text in 0...255 range. LV_OPA_TRANSP, LV_OPA_10, LV_OPA_20, .. LV_OPA_COVER can be used as well

lv_text_align_t align

The alignment of the text LV_TEXT_ALIGN_LEFT/RIGHT/CENTER

lv_base_dir_t bidi_dir

The base direction. Used when type setting Right-to-left (e.g. Arabic) texts

lv_text_decor_t decor

Text decoration, e.g. underline

lv_text_flag_t flag

Some flags to control type setting

uint8_t text_local

1: malloc a buffer and copy text there. 0: text will be valid during rendering.

uint8_t text_static

Indicate that the text is constant and its pointer can be safely saved e.g. in a cache.

uint8_t has_bided

1: already executed lv_bidi_process_paragraph. 0: has not been executed lv_bidi_process_paragraph.

lv_draw_label_hint_t *hint

Pointer to an externally stored struct where some data can be cached to speed up rendering

struct lv_draw_letter_dsc_t

Public Members

lv_draw_dsc_base_t base
uint32_t unicode
const lv_font_t *font
lv_color_t color
int32_t rotation
int32_t scale_x
int32_t scale_y
int32_t skew_x
int32_t skew_y
lv_point_t pivot
lv_opa_t opa
lv_text_decor_t decor
lv_blend_mode_t blend_mode