lv_draw_label.h

Defines

LV_DRAW_LABEL_NO_TXT_SEL

Typedefs

typedef struct _lv_draw_label_hint_t lv_draw_label_hint_t

Store some info to speed up drawing of very large texts It takes a lot of time to get the first visible character because all the previous characters needs to be checked to calculate the positions. This structure stores an earlier (e.g. at -1000 px) coordinate and the index of that line. Therefore the calculations can start from here.

typedef void (*lv_draw_glyph_cb_t)(lv_draw_unit_t *draw_unit, 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 draw_unit:

pointer to a draw unit

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_label_dsc_init(lv_draw_label_dsc_t *dsc)

Initialize a label draw descriptor

参数:

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.

参数:

task -- draw task

返回:

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.

参数:

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)

Crate a draw task to render a text

参数:
  • 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)

Crate a draw task to render a single character

参数:
  • layer -- pointer to a layer

  • dsc -- pointer to draw descriptor

  • point -- position of the label

  • unicode_letter -- the letter to draw

void lv_draw_label_iterate_characters(lv_draw_unit_t *draw_unit, 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

参数:
  • draw_unit -- pointer to a draw unit

  • dsc -- pointer to draw descriptor

  • coords -- coordinates of the label

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

struct _lv_draw_label_hint_t
#include <lv_draw_label.h>

Store some info to speed up drawing of very large texts It takes a lot of time to get the first visible character because all the previous characters needs to be checked to calculate the positions. This structure stores an earlier (e.g. at -1000 px) coordinate and the index of that line. Therefore the calculations can start from here.

Public Members

int32_t line_start

Index of the line at y coordinate

int32_t y

Give the y coordinate of the first letter at line start index. Relative to the label's coordinates

int32_t coord_y

The 'y1' coordinate of the label when the hint was saved. Used to invalidate the hint if the label has moved too much.

struct lv_draw_label_dsc_t

Public Members

lv_draw_dsc_base_t base
const char *text
const lv_font_t *font
uint32_t sel_start
uint32_t sel_end
lv_color_t color
lv_color_t sel_color
lv_color_t sel_bg_color
int32_t line_space
int32_t letter_space
int32_t ofs_x
int32_t ofs_y
lv_opa_t opa
lv_base_dir_t bidi_dir
lv_text_align_t align
lv_text_flag_t flag
lv_text_decor_t decor
lv_blend_mode_t blend_mode
uint8_t text_local

< 1: malloc buffer and copy text there. 0: text is const and it's pointer will be valid during rendering.

lv_draw_label_hint_t *hint
struct lv_draw_glyph_dsc_t

Public Members

void *glyph_data
lv_font_glyph_format_t format
const lv_area_t *letter_coords
const lv_area_t *bg_coords
const lv_font_glyph_dsc_t *g
lv_color_t color
lv_opa_t opa
lv_draw_buf_t *_draw_buf