/** * @file lv_draw_label.h * */ #ifndef LV_DRAW_LABEL_H #define LV_DRAW_LABEL_H #ifdef __cplusplus extern "C" { #endif /********************* * INCLUDES *********************/ #include "lv_draw.h" /********************* * DEFINES *********************/ /********************** * TYPEDEFS **********************/ /** 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 struct { /** Index of the line at `y` coordinate*/ int32_t line_start; /** Give the `y` coordinate of the first letter at `line start` index. Relative to the label's coordinates*/ int32_t y; /** The 'y1' coordinate of the label when the hint was saved. * Used to invalidate the hint if the label has moved too much. */ int32_t coord_y; }lv_draw_label_hint_t; /********************** * GLOBAL PROTOTYPES **********************/ /** * Write a text * @param coords coordinates of the label * @param mask the label will be drawn only in this area * @param style pointer to a style * @param opa_scale scale down all opacities by the factor * @param txt 0 terminated text to write * @param flag settings for the text from 'txt_flag_t' enum * @param offset text offset in x and y direction (NULL if unused) * @param sel_start start index of selected area (`LV_LABEL_TXT_SEL_OFF` if none) * @param sel_end end index of selected area (`LV_LABEL_TXT_SEL_OFF` if none) */ void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, const lv_style_t * style, lv_opa_t opa_scale, const char * txt, lv_txt_flag_t flag, lv_point_t * offset, uint16_t sel_start, uint16_t sel_end, lv_draw_label_hint_t * hint); /********************** * MACROS **********************/ #ifdef __cplusplus } /* extern "C" */ #endif #endif /*LV_DRAW_LABEL_H*/