summaryrefslogtreecommitdiff
path: root/lib/lvgl/examples/widgets/label
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
commitdd27c3530432ea0b09f01e604bf577f31d8ef841 (patch)
treebbf86cf81a78f0ff0b07f31f1c390db473f26fd3 /lib/lvgl/examples/widgets/label
parent6fd588e970470b15936187980829916d0dbe77bb (diff)
downloadtangara-fw-dd27c3530432ea0b09f01e604bf577f31d8ef841.tar.gz
convert lvgl from submodule to a plain old directory
Diffstat (limited to 'lib/lvgl/examples/widgets/label')
m---------lib/lvgl0
-rw-r--r--lib/lvgl/examples/widgets/label/index.rst31
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_1.c25
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_1.py19
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_2.c36
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_2.py30
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_3.c31
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_3.py36
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_4.c63
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_5.c30
-rw-r--r--lib/lvgl/examples/widgets/label/lv_example_label_5.py10
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)
+