Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LVGL add helper functions #20968

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions lib/libesp32_lvgl/lv_binding_berry/generate/LVGL_API_Reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,6 @@ point_set|comptr, int, int||[lv_point_set](https://docs.lvgl.io/9.0/search.html?
point_swap|comptr, comptr||[lv_point_swap](https://docs.lvgl.io/9.0/search.html?q=lv_point_swap)
point_transform|comptr, int, int, int, comptr, bool||[lv_point_transform](https://docs.lvgl.io/9.0/search.html?q=lv_point_transform)
refr_now|lv.display||[lv_refr_now](https://docs.lvgl.io/9.0/search.html?q=lv_refr_now)
scale_section_set_range|comptr, int, int||[lv_scale_section_set_range](https://docs.lvgl.io/9.0/search.html?q=lv_scale_section_set_range)
scale_section_set_style|comptr, int, lv.style||[lv_scale_section_set_style](https://docs.lvgl.io/9.0/search.html?q=lv_scale_section_set_style)
scr_act||lv.obj|[lv_screen_active](https://docs.lvgl.io/9.0/search.html?q=lv_screen_active)
scr_load|lv.obj||[lv_screen_load](https://docs.lvgl.io/9.0/search.html?q=lv_screen_load)
scr_load_anim|lv.obj, int, int, int, bool||[lv_screen_load_anim](https://docs.lvgl.io/9.0/search.html?q=lv_screen_load_anim)
Expand Down Expand Up @@ -1166,6 +1164,8 @@ set_text_static|string||[lv_label_set_text_static](https://docs.lvgl.io/9.0/sear

Method|Arguments|Return type|LVGL equivalent
:---|:---|:---|:---
get_points||comptr|[lv_line_get_points](https://docs.lvgl.io/9.0/search.html?q=lv_line_get_points)
get_points_num||int|[lv_line_get_points_num](https://docs.lvgl.io/9.0/search.html?q=lv_line_get_points_num)
get_y_invert||bool|[lv_line_get_y_invert](https://docs.lvgl.io/9.0/search.html?q=lv_line_get_y_invert)
set_points|lv.point_arr, int||[lv_line_set_points](https://docs.lvgl.io/9.0/search.html?q=lv_line_set_points)
set_y_invert|bool||[lv_line_set_y_invert](https://docs.lvgl.io/9.0/search.html?q=lv_line_set_y_invert)
Expand Down Expand Up @@ -1303,11 +1303,18 @@ get_style||lv.style|[lv_span_get_style](https://docs.lvgl.io/9.0/search.html?q=l
set_text|string||[lv_span_set_text](https://docs.lvgl.io/9.0/search.html?q=lv_span_set_text)
set_text_static|string||[lv_span_set_text_static](https://docs.lvgl.io/9.0/search.html?q=lv_span_set_text_static)

### widget `lv.scale_section`

Method|Arguments|Return type|LVGL equivalent
:---|:---|:---|:---
set_range|int, int||[lv_scale_section_set_range](https://docs.lvgl.io/9.0/search.html?q=lv_scale_section_set_range)
set_style|int, lv.style||[lv_scale_section_set_style](https://docs.lvgl.io/9.0/search.html?q=lv_scale_section_set_style)

### widget `lv.scale`

Method|Arguments|Return type|LVGL equivalent
:---|:---|:---|:---
add_section||comptr|[lv_scale_add_section](https://docs.lvgl.io/9.0/search.html?q=lv_scale_add_section)
add_section||lv.scale_section|[lv_scale_add_section](https://docs.lvgl.io/9.0/search.html?q=lv_scale_add_section)
get_angle_range||int|[lv_scale_get_angle_range](https://docs.lvgl.io/9.0/search.html?q=lv_scale_get_angle_range)
get_label_show||bool|[lv_scale_get_label_show](https://docs.lvgl.io/9.0/search.html?q=lv_scale_get_label_show)
get_major_tick_every||int|[lv_scale_get_major_tick_every](https://docs.lvgl.io/9.0/search.html?q=lv_scale_get_major_tick_every)
Expand Down
20 changes: 19 additions & 1 deletion lib/libesp32_lvgl/lv_binding_berry/generate/be_lv_c_mapping.h
Original file line number Diff line number Diff line change
Expand Up @@ -1074,6 +1074,8 @@ const be_ntv_func_def_t lv_led_func[] = {
/* `lv_line` methods */
#ifdef BE_LV_WIDGET_LINE
const be_ntv_func_def_t lv_line_func[] = {
{ "get_points", { (const void*) &lv_line_get_points, "c", "(lv.obj)" } },
{ "get_points_num", { (const void*) &lv_line_get_points_num, "i", "(lv.obj)" } },
{ "get_y_invert", { (const void*) &lv_line_get_y_invert, "b", "(lv.obj)" } },
{ "set_points", { (const void*) &lv_line_set_points, "", "(lv.obj)(lv.point_arr)i" } },
{ "set_y_invert", { (const void*) &lv_line_set_y_invert, "", "(lv.obj)b" } },
Expand Down Expand Up @@ -1149,7 +1151,7 @@ const be_ntv_func_def_t lv_roller_func[] = {
/* `lv_scale` methods */
#ifdef BE_LV_WIDGET_SCALE
const be_ntv_func_def_t lv_scale_func[] = {
{ "add_section", { (const void*) &lv_scale_add_section, "c", "(lv.obj)" } },
{ "add_section", { (const void*) &lv_scale_add_section, "lv.scale_section", "(lv.obj)" } },
{ "get_angle_range", { (const void*) &lv_scale_get_angle_range, "i", "(lv.obj)" } },
{ "get_label_show", { (const void*) &lv_scale_get_label_show, "b", "(lv.obj)" } },
{ "get_major_tick_every", { (const void*) &lv_scale_get_major_tick_every, "i", "(lv.obj)" } },
Expand All @@ -1172,6 +1174,14 @@ const be_ntv_func_def_t lv_scale_func[] = {
};
#endif // BE_LV_WIDGET_SCALE

/* `lv_scale_section` methods */
#ifdef BE_LV_WIDGET_SCALE_SECTION
const be_ntv_func_def_t lv_scale_section_func[] = {
{ "set_range", { (const void*) &lv_scale_section_set_range, "", "(lv.scale_section)ii" } },
{ "set_style", { (const void*) &lv_scale_section_set_style, "", "(lv.scale_section)i(lv.style)" } },
};
#endif // BE_LV_WIDGET_SCALE_SECTION

/* `lv_slider` methods */
#ifdef BE_LV_WIDGET_SLIDER
const be_ntv_func_def_t lv_slider_func[] = {
Expand Down Expand Up @@ -1384,6 +1394,7 @@ extern const bclass be_class_lv_obj;
extern const bclass be_class_lv_qrcode;
extern const bclass be_class_lv_roller;
extern const bclass be_class_lv_scale;
extern const bclass be_class_lv_scale_section;
extern const bclass be_class_lv_slider;
extern const bclass be_class_lv_span;
extern const bclass be_class_lv_spangroup;
Expand Down Expand Up @@ -1477,6 +1488,9 @@ const be_ntv_class_def_t lv_classes[] = {
#ifdef BE_LV_WIDGET_SCALE
{ "lv_scale", &be_class_lv_scale, lv_scale_func, sizeof(lv_scale_func) / sizeof(lv_scale_func[0]) },
#endif // BE_LV_WIDGET_SCALE
#ifdef BE_LV_WIDGET_SCALE_SECTION
{ "lv_scale_section", &be_class_lv_scale_section, lv_scale_section_func, sizeof(lv_scale_section_func) / sizeof(lv_scale_section_func[0]) },
#endif // BE_LV_WIDGET_SCALE_SECTION
#ifdef BE_LV_WIDGET_SLIDER
{ "lv_slider", &be_class_lv_slider, lv_slider_func, sizeof(lv_slider_func) / sizeof(lv_slider_func[0]) },
#endif // BE_LV_WIDGET_SLIDER
Expand Down Expand Up @@ -1634,6 +1648,10 @@ const size_t lv_classes_size = sizeof(lv_classes) / sizeof(lv_classes[0]);
#ifdef BE_LV_WIDGET_SCALE
int be_ntv_lv_scale_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_scale_create, "+_p", "(lv.obj)"); }
#endif // BE_LV_WIDGET_SCALE
/* `lv_scale_section` methods */
#ifdef BE_LV_WIDGET_SCALE_SECTION
int be_ntv_lv_scale_section_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_scale_section_set_style, "+_p", "(lv.scale_section)i(lv.style)"); }
#endif // BE_LV_WIDGET_SCALE_SECTION
/* `lv_slider` methods */
#ifdef BE_LV_WIDGET_SLIDER
int be_ntv_lv_slider_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_slider_create, "+_p", "(lv.obj)"); }
Expand Down
2 changes: 0 additions & 2 deletions lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,6 @@ const be_ntv_func_def_t lv_func[] = {
{ "point_swap", { (const void*) &lv_point_swap, "", "cc" } },
{ "point_transform", { (const void*) &lv_point_transform, "", "ciiicb" } },
{ "refr_now", { (const void*) &lv_refr_now, "", "(lv.display)" } },
{ "scale_section_set_range", { (const void*) &lv_scale_section_set_range, "", "cii" } },
{ "scale_section_set_style", { (const void*) &lv_scale_section_set_style, "", "ci(lv.style)" } },
{ "scr_act", { (const void*) &lv_screen_active, "lv.obj", "" } },
{ "scr_load", { (const void*) &lv_screen_load, "", "(lv.obj)" } },
{ "scr_load_anim", { (const void*) &lv_screen_load_anim, "", "(lv.obj)iiib" } },
Expand Down
14 changes: 14 additions & 0 deletions lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_widgets_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ extern int lv_x_member(bvm *vm);
extern int lv_x_tostring(bvm *vm); // generic function

extern int lv_be_style_init(bvm *vm);
extern int lv_be_style_del(bvm *vm);
extern int lv_be_anim_init(bvm *vm);
extern int lv_x_tostring(bvm *vm);

Expand Down Expand Up @@ -62,6 +63,7 @@ extern int be_ntv_lv_menu_init(bvm *vm);
extern int be_ntv_lv_msgbox_init(bvm *vm);
extern int be_ntv_lv_roller_init(bvm *vm);
extern int be_ntv_lv_scale_init(bvm *vm);
extern int be_ntv_lv_scale_section_init(bvm *vm);
extern int be_ntv_lv_slider_init(bvm *vm);
extern int be_ntv_lv_span_init(bvm *vm);
extern int be_ntv_lv_spangroup_init(bvm *vm);
Expand Down Expand Up @@ -103,6 +105,7 @@ extern const bclass be_class_lv_obj;
extern const bclass be_class_lv_qrcode;
extern const bclass be_class_lv_roller;
extern const bclass be_class_lv_scale;
extern const bclass be_class_lv_scale_section;
extern const bclass be_class_lv_slider;
extern const bclass be_class_lv_span;
extern const bclass be_class_lv_spangroup;
Expand All @@ -126,6 +129,7 @@ extern const bclass be_class_lv_timer;
class be_class_lv_style (scope: global, name: lv_style, strings: weak) {
_p, var
init, func(lv_be_style_init)
del, func(lv_be_style_del)
tostring, func(lv_x_tostring)
member, func(lv_x_member)
}
Expand Down Expand Up @@ -507,6 +511,16 @@ class be_class_lv_scale (scope: global, name: lv_scale, super: be_class_lv_obj,
}
@const_object_info_end */

/********************************************************************
** Solidified class: lv_scale_section
********************************************************************/
#include "be_fixed_be_class_lv_scale_section.h"
/* @const_object_info_begin
class be_class_lv_scale_section (scope: global, name: lv_scale_section, super: be_class_lv_obj, strings: weak) {
init, func(be_ntv_lv_scale_section_init)
}
@const_object_info_end */

/********************************************************************
** Solidified class: lv_slider
********************************************************************/
Expand Down
2 changes: 2 additions & 0 deletions lib/libesp32_lvgl/lv_binding_berry/mapping/lv_funcs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1489,4 +1489,6 @@ void be_load_lvgl_classes(bvm *vm)
void lv_image_set_tasmota_logo(lv_obj_t * img)
lv_style_t * lv_span_get_style(lv_span_t * span)
lv_area_t * lv_bar_get_indic_area(lv_obj_t * bar)
lv_point_t * lv_line_get_points(lv_obj_t * line)
int lv_line_get_points_num(lv_obj_t * line)

26 changes: 23 additions & 3 deletions lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,27 @@ int lv_be_style_init(bvm *vm) {
if (style == NULL) {
be_throw(vm, BE_MALLOC_FAIL);
}
if (style != NULL) {
lv_style_init(style);
}
lv_style_init(style);
}
be_pushcomptr(vm, style);
be_setmember(vm, 1, "_p");
be_return_nil(vm);
}
/*********************************************************************************************\
* Delete style
*
* Use with caution, it shouldn't be referenced after this call
\*********************************************************************************************/
int lv_be_style_del(bvm *vm) {
be_getmember(vm, 1, "_p");
lv_style_t * style = be_tocomptr(vm, -1);
if (style != NULL) {
be_free(vm, style, sizeof(lv_style_t));
}
be_pushcomptr(vm, NULL);
be_setmember(vm, 1, "_p");
be_return_nil(vm);
}

/*********************************************************************************************\
* Support for lv_anim `init()`
Expand Down Expand Up @@ -383,4 +396,11 @@ lv_style_t * lv_span_get_style(lv_span_t * span) {
}
lv_area_t * lv_bar_get_indic_area(lv_obj_t * bar) {
return &((lv_bar_t*)bar)->indic_area;
}
// add accessor for lv_line points array
lv_point_t * lv_line_get_points(lv_obj_t * line) {
return &((lv_line_t*)line)->point_array[0];
}
int lv_line_get_points_num(lv_obj_t * line) {
return ((lv_line_t*)line)->point_num;
}
4 changes: 4 additions & 0 deletions lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ extern lv_style_t * lv_span_get_style(lv_span_t * span);
// add accessor for lv_bar->indic_area
extern lv_area_t * lv_bar_get_indic_area(lv_obj_t * bar);

// add accessor for lv_line points array
extern lv_point_t * lv_line_get_points(lv_obj_t * line);
extern int lv_line_get_points_num(lv_obj_t * line);

#ifdef __cplusplus
}
#endif
Expand Down
9 changes: 6 additions & 3 deletions lib/libesp32_lvgl/lv_binding_berry/tools/convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@
'dropdown', 'image', 'label', 'line', 'roller', 'slider',
'switch', 'table', 'textarea',
# added in LVGL 9
'spangroup', 'span', 'scale',
'spangroup', 'span',
'scale_section', 'scale', # 'scale_section' needs to be before 'scale' to capture more selective first
]
lv_widgets_no_class = ['span'] # widgets that don't have a lv_obj class
lv_widgets_no_class = ['span', 'scale_section'] # widgets that don't have a lv_obj class
# extra widgets
lv_widgets = lv_widgets + [ 'chart', 'imagebutton', 'led', 'msgbox', 'spinbox', 'spinner', 'keyboard', 'tabview', 'tileview' , 'list',
'animimg', 'calendar', 'menu']
Expand Down Expand Up @@ -349,7 +350,6 @@ class type_mapper_class:
"lv_span_mode_t": "i",
"lv_vector_path_t *": "c", # treat as opaque pointer
"lv_vector_dsc_t *": "c", # treat as opaque pointer
"lv_scale_section_t *": "c", # treat as opaque pointer
"lv_point_t *": "c", # treat as opaque pointer
"lv_hit_test_info_t *": "c", # treat as opaque pointer
"lv_screen_load_anim_t": "i",
Expand Down Expand Up @@ -424,6 +424,7 @@ class type_mapper_class:
"lv_indev_t *": "lv_indev",
"lv_point_t []": "lv_point_arr",
"lv_span_t *": "lv_span",
"lv_scale_section_t *": "lv_scale_section", # treat as opaque pointer
# "lv_image_header_t *": "lv_image_header",
"lv_image_dsc_t *": "lv_image_dsc",
"lv_ts_calibration_t *": "lv_ts_calibration",
Expand Down Expand Up @@ -890,6 +891,7 @@ def try_int(s):
extern int lv_x_tostring(bvm *vm); // generic function

extern int lv_be_style_init(bvm *vm);
extern int lv_be_style_del(bvm *vm);
extern int lv_be_anim_init(bvm *vm);
extern int lv_x_tostring(bvm *vm);

Expand Down Expand Up @@ -922,6 +924,7 @@ def try_int(s):
class be_class_lv_style (scope: global, name: lv_style, strings: weak) {
_p, var
init, func(lv_be_style_init)
del, func(lv_be_style_del)
tostring, func(lv_x_tostring)
member, func(lv_x_member)
}
Expand Down
1 change: 1 addition & 0 deletions tasmota/my_user_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -1241,6 +1241,7 @@ An online tool to calculate TLS fingerprints is available here at:\n\
#define BE_LV_WIDGET_MSGBOX
#define BE_LV_WIDGET_QRCODE
#define BE_LV_WIDGET_SCALE
#define BE_LV_WIDGET_SCALE_SECTION
// #define BE_LV_WIDGET_SPINBOX
#define BE_LV_WIDGET_SPINNER
#define BE_LV_WIDGET_SPANGROUP
Expand Down