diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-01 15:41:47 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-01 15:41:47 +1000 |
| commit | dd27c3530432ea0b09f01e604bf577f31d8ef841 (patch) | |
| tree | bbf86cf81a78f0ff0b07f31f1c390db473f26fd3 /lib/lvgl/examples/widgets/label | |
| parent | 6fd588e970470b15936187980829916d0dbe77bb (diff) | |
| download | tangara-fw-dd27c3530432ea0b09f01e604bf577f31d8ef841.tar.gz | |
convert lvgl from submodule to a plain old directory
Diffstat (limited to 'lib/lvgl/examples/widgets/label')
| m--------- | lib/lvgl | 0 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/index.rst | 31 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_1.c | 25 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_1.py | 19 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_2.c | 36 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_2.py | 30 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_3.c | 31 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_3.py | 36 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_4.c | 63 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_5.c | 30 | ||||
| -rw-r--r-- | lib/lvgl/examples/widgets/label/lv_example_label_5.py | 10 |
11 files changed, 311 insertions, 0 deletions
diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 -Subproject 0732400e7b564dd0e7dc4a924619d8e19c5b23a diff --git a/lib/lvgl/examples/widgets/label/index.rst b/lib/lvgl/examples/widgets/label/index.rst new file mode 100644 index 00000000..b2b56478 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/index.rst @@ -0,0 +1,31 @@ + +Line wrap, recoloring and scrolling +""""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/label/lv_example_label_1 + :language: c + +Text shadow +"""""""""""" + +.. lv_example:: widgets/label/lv_example_label_2 + :language: c + +Show LTR, RTL and Chinese texts +"""""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/label/lv_example_label_3 + :language: c + +Draw label with gradient color +"""""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/label/lv_example_label_4 + :language: c + +Customize circular scrolling animation +"""""""""""""""""""""""""""""""""""" + +.. lv_example:: widgets/label/lv_example_label_5 + :language: c + diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_1.c b/lib/lvgl/examples/widgets/label/lv_example_label_1.c new file mode 100644 index 00000000..886cd4a7 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_1.c @@ -0,0 +1,25 @@ +#include "../../lv_examples.h" +#if LV_USE_LABEL && LV_BUILD_EXAMPLES + +/** + * Show line wrap, re-color, line align and text scrolling. + */ +void lv_example_label_1(void) +{ + lv_obj_t * label1 = lv_label_create(lv_scr_act()); + lv_label_set_long_mode(label1, LV_LABEL_LONG_WRAP); /*Break the long lines*/ + lv_label_set_recolor(label1, true); /*Enable re-coloring by commands in the text*/ + lv_label_set_text(label1, "#0000ff Re-color# #ff00ff words# #ff0000 of a# label, align the lines to the center " + "and wrap long text automatically."); + lv_obj_set_width(label1, 150); /*Set smaller width to make the lines wrap*/ + lv_obj_set_style_text_align(label1, LV_TEXT_ALIGN_CENTER, 0); + lv_obj_align(label1, LV_ALIGN_CENTER, 0, -40); + + lv_obj_t * label2 = lv_label_create(lv_scr_act()); + lv_label_set_long_mode(label2, LV_LABEL_LONG_SCROLL_CIRCULAR); /*Circular scroll*/ + lv_obj_set_width(label2, 150); + lv_label_set_text(label2, "It is a circularly scrolling text. "); + lv_obj_align(label2, LV_ALIGN_CENTER, 0, 40); +} + +#endif diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_1.py b/lib/lvgl/examples/widgets/label/lv_example_label_1.py new file mode 100644 index 00000000..f2fa9114 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_1.py @@ -0,0 +1,19 @@ +# +# Show line wrap, re-color, line align and text scrolling. +# +label1 = lv.label(lv.scr_act()) +label1.set_long_mode(lv.label.LONG.WRAP) # Break the long lines*/ +label1.set_recolor(True) # Enable re-coloring by commands in the text +label1.set_text("#0000ff Re-color# #ff00ff words# #ff0000 of a# label, align the lines to the center" + "and wrap long text automatically.") +label1.set_width(150) # Set smaller width to make the lines wrap +label1.set_style_text_align(lv.ALIGN.CENTER, 0) +label1.align(lv.ALIGN.CENTER, 0, -40) + + +label2 = lv.label(lv.scr_act()) +label2.set_long_mode(lv.label.LONG.SCROLL_CIRCULAR) # Circular scroll +label2.set_width(150) +label2.set_text("It is a circularly scrolling text. ") +label2.align(lv.ALIGN.CENTER, 0, 40) + diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_2.c b/lib/lvgl/examples/widgets/label/lv_example_label_2.c new file mode 100644 index 00000000..0b605cf2 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_2.c @@ -0,0 +1,36 @@ +#include "../../lv_examples.h" +#if LV_USE_LABEL && LV_BUILD_EXAMPLES + +/** + * Create a fake text shadow + */ +void lv_example_label_2(void) +{ + /*Create a style for the shadow*/ + static lv_style_t style_shadow; + lv_style_init(&style_shadow); + lv_style_set_text_opa(&style_shadow, LV_OPA_30); + lv_style_set_text_color(&style_shadow, lv_color_black()); + + /*Create a label for the shadow first (it's in the background)*/ + lv_obj_t * shadow_label = lv_label_create(lv_scr_act()); + lv_obj_add_style(shadow_label, &style_shadow, 0); + + /*Create the main label*/ + lv_obj_t * main_label = lv_label_create(lv_scr_act()); + lv_label_set_text(main_label, "A simple method to create\n" + "shadows on a text.\n" + "It even works with\n\n" + "newlines and spaces."); + + /*Set the same text for the shadow label*/ + lv_label_set_text(shadow_label, lv_label_get_text(main_label)); + + /*Position the main label*/ + lv_obj_align(main_label, LV_ALIGN_CENTER, 0, 0); + + /*Shift the second label down and to the right by 2 pixel*/ + lv_obj_align_to(shadow_label, main_label, LV_ALIGN_TOP_LEFT, 2, 2); +} + +#endif diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_2.py b/lib/lvgl/examples/widgets/label/lv_example_label_2.py new file mode 100644 index 00000000..d252f256 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_2.py @@ -0,0 +1,30 @@ +# +# Create a fake text shadow +# + +# Create a style for the shadow +style_shadow = lv.style_t() +style_shadow.init() +style_shadow.set_text_opa(lv.OPA._30) +style_shadow.set_text_color(lv.color_black()) + +# Create a label for the shadow first (it's in the background) +shadow_label = lv.label(lv.scr_act()) +shadow_label.add_style(style_shadow, 0) + +# Create the main label +main_label = lv.label(lv.scr_act()) +main_label.set_text("A simple method to create\n" + "shadows on a text.\n" + "It even works with\n\n" + "newlines and spaces.") + +# Set the same text for the shadow label +shadow_label.set_text(lv.label.get_text(main_label)) + +# Position the main label +main_label.align(lv.ALIGN.CENTER, 0, 0) + +# Shift the second label down and to the right by 2 pixel +shadow_label.align_to(main_label, lv.ALIGN.TOP_LEFT, 2, 2) + diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_3.c b/lib/lvgl/examples/widgets/label/lv_example_label_3.c new file mode 100644 index 00000000..680d88fe --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_3.c @@ -0,0 +1,31 @@ +#include "../../lv_examples.h" +#if LV_USE_LABEL && LV_BUILD_EXAMPLES && LV_FONT_DEJAVU_16_PERSIAN_HEBREW && LV_FONT_SIMSUN_16_CJK && LV_USE_BIDI + +/** + * Show mixed LTR, RTL and Chinese label + */ +void lv_example_label_3(void) +{ + lv_obj_t * ltr_label = lv_label_create(lv_scr_act()); + lv_label_set_text(ltr_label, "In modern terminology, a microcontroller is similar to a system on a chip (SoC)."); + lv_obj_set_style_text_font(ltr_label, &lv_font_montserrat_16, 0); + lv_obj_set_width(ltr_label, 310); + lv_obj_align(ltr_label, LV_ALIGN_TOP_LEFT, 5, 5); + + lv_obj_t * rtl_label = lv_label_create(lv_scr_act()); + lv_label_set_text(rtl_label, + "מעבד, או בשמו המלא יחידת עיבוד מרכזית (באנגלית: CPU - Central Processing Unit)."); + lv_obj_set_style_base_dir(rtl_label, LV_BASE_DIR_RTL, 0); + lv_obj_set_style_text_font(rtl_label, &lv_font_dejavu_16_persian_hebrew, 0); + lv_obj_set_width(rtl_label, 310); + lv_obj_align(rtl_label, LV_ALIGN_LEFT_MID, 5, 0); + + lv_obj_t * cz_label = lv_label_create(lv_scr_act()); + lv_label_set_text(cz_label, + "嵌入式系统(Embedded System),\n是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。"); + lv_obj_set_style_text_font(cz_label, &lv_font_simsun_16_cjk, 0); + lv_obj_set_width(cz_label, 310); + lv_obj_align(cz_label, LV_ALIGN_BOTTOM_LEFT, 5, -5); +} + +#endif diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_3.py b/lib/lvgl/examples/widgets/label/lv_example_label_3.py new file mode 100644 index 00000000..12c9034a --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_3.py @@ -0,0 +1,36 @@ +import fs_driver +# +# Show mixed LTR, RTL and Chinese label +# + +ltr_label = lv.label(lv.scr_act()) +ltr_label.set_text("In modern terminology, a microcontroller is similar to a system on a chip (SoC).") +# ltr_label.set_style_text_font(ltr_label, &lv_font_montserrat_16, 0); + +fs_drv = lv.fs_drv_t() +fs_driver.fs_register(fs_drv, 'S') + +try: + ltr_label.set_style_text_font(ltr_label, lv.font_montserrat_16, 0) +except: + font_montserrat_16 = lv.font_load("S:../../assets/font/montserrat-16.fnt") + ltr_label.set_style_text_font(font_montserrat_16, 0) + +ltr_label.set_width(310) +ltr_label.align(lv.ALIGN.TOP_LEFT, 5, 5) + +rtl_label = lv.label(lv.scr_act()) +rtl_label.set_text("מעבד, או בשמו המלא יחידת עיבוד מרכזית (באנגלית: CPU - Central Processing Unit).") +rtl_label.set_style_base_dir(lv.BASE_DIR.RTL, 0) +rtl_label.set_style_text_font(lv.font_dejavu_16_persian_hebrew, 0) +rtl_label.set_width(310) +rtl_label.align(lv.ALIGN.LEFT_MID, 5, 0) + +font_simsun_16_cjk = lv.font_load("S:../../assets/font/lv_font_simsun_16_cjk.fnt") + +cz_label = lv.label(lv.scr_act()) +cz_label.set_style_text_font(font_simsun_16_cjk, 0) +cz_label.set_text("嵌入式系统(Embedded System),\n是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。") +cz_label.set_width(310) +cz_label.align(lv.ALIGN.BOTTOM_LEFT, 5, -5) + diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_4.c b/lib/lvgl/examples/widgets/label/lv_example_label_4.c new file mode 100644 index 00000000..68b456af --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_4.c @@ -0,0 +1,63 @@ +#include "../../lv_examples.h" +#if LV_USE_LABEL && LV_USE_CANVAS && LV_BUILD_EXAMPLES && LV_DRAW_COMPLEX + +#define MASK_WIDTH 100 +#define MASK_HEIGHT 45 + +static void add_mask_event_cb(lv_event_t * e) +{ + static lv_draw_mask_map_param_t m; + static int16_t mask_id; + + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + lv_opa_t * mask_map = lv_event_get_user_data(e); + if(code == LV_EVENT_COVER_CHECK) { + lv_event_set_cover_res(e, LV_COVER_RES_MASKED); + } + else if(code == LV_EVENT_DRAW_MAIN_BEGIN) { + lv_draw_mask_map_init(&m, &obj->coords, mask_map); + mask_id = lv_draw_mask_add(&m, NULL); + + } + else if(code == LV_EVENT_DRAW_MAIN_END) { + lv_draw_mask_free_param(&m); + lv_draw_mask_remove_id(mask_id); + } +} + +/** + * Draw label with gradient color + */ +void lv_example_label_4(void) +{ + /* Create the mask of a text by drawing it to a canvas*/ + static lv_opa_t mask_map[MASK_WIDTH * MASK_HEIGHT]; + + /*Create a "8 bit alpha" canvas and clear it*/ + lv_obj_t * canvas = lv_canvas_create(lv_scr_act()); + lv_canvas_set_buffer(canvas, mask_map, MASK_WIDTH, MASK_HEIGHT, LV_IMG_CF_ALPHA_8BIT); + lv_canvas_fill_bg(canvas, lv_color_black(), LV_OPA_TRANSP); + + /*Draw a label to the canvas. The result "image" will be used as mask*/ + lv_draw_label_dsc_t label_dsc; + lv_draw_label_dsc_init(&label_dsc); + label_dsc.color = lv_color_white(); + label_dsc.align = LV_TEXT_ALIGN_CENTER; + lv_canvas_draw_text(canvas, 5, 5, MASK_WIDTH, &label_dsc, "Text with gradient"); + + /*The mask is reads the canvas is not required anymore*/ + lv_obj_del(canvas); + + /* Create an object from where the text will be masked out. + * Now it's a rectangle with a gradient but it could be an image too*/ + lv_obj_t * grad = lv_obj_create(lv_scr_act()); + lv_obj_set_size(grad, MASK_WIDTH, MASK_HEIGHT); + lv_obj_center(grad); + lv_obj_set_style_bg_color(grad, lv_color_hex(0xff0000), 0); + lv_obj_set_style_bg_grad_color(grad, lv_color_hex(0x0000ff), 0); + lv_obj_set_style_bg_grad_dir(grad, LV_GRAD_DIR_HOR, 0); + lv_obj_add_event_cb(grad, add_mask_event_cb, LV_EVENT_ALL, mask_map); +} + +#endif diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_5.c b/lib/lvgl/examples/widgets/label/lv_example_label_5.c new file mode 100644 index 00000000..c190df69 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_5.c @@ -0,0 +1,30 @@ +#include "../../lv_examples.h" +#if LV_USE_LABEL && LV_BUILD_EXAMPLES + +/** + * Show customizing the circular scrolling animation of a label with `LV_LABEL_LONG_SCROLL_CIRCULAR` + * long mode. + */ +void lv_example_label_5(void) +{ + static lv_anim_t animation_template; + static lv_style_t label_style; + + lv_anim_init(&animation_template); + lv_anim_set_delay(&animation_template, 1000); /*Wait 1 second to start the first scroll*/ + lv_anim_set_repeat_delay(&animation_template, + 3000); /*Repeat the scroll 3 seconds after the label scrolls back to the initial position*/ + + /*Initialize the label style with the animation template*/ + lv_style_init(&label_style); + lv_style_set_anim(&label_style, &animation_template); + + lv_obj_t * label1 = lv_label_create(lv_scr_act()); + lv_label_set_long_mode(label1, LV_LABEL_LONG_SCROLL_CIRCULAR); /*Circular scroll*/ + lv_obj_set_width(label1, 150); + lv_label_set_text(label1, "It is a circularly scrolling text. "); + lv_obj_align(label1, LV_ALIGN_CENTER, 0, 40); + lv_obj_add_style(label1, &label_style, LV_STATE_DEFAULT); /*Add the style to the label*/ +} + +#endif diff --git a/lib/lvgl/examples/widgets/label/lv_example_label_5.py b/lib/lvgl/examples/widgets/label/lv_example_label_5.py new file mode 100644 index 00000000..817d53e3 --- /dev/null +++ b/lib/lvgl/examples/widgets/label/lv_example_label_5.py @@ -0,0 +1,10 @@ +# +# Show customizing the circular scrolling animation of a label with `LV_LABEL_LONG_SCROLL_CIRCULAR` long mode. +# + +label1 = lv.label(lv.scr_act()) +label1.set_long_mode(lv.label.LONG.SCROLL_CIRCULAR) # Circular scroll +label1.set_width(150) +label1.set_text("It is a circularly scrolling text. ") +label1.align(lv.ALIGN.CENTER, 0, 40) + |
