Skip to content

Commit

Permalink
LVGL add helper functions (arendst#20968)
Browse files Browse the repository at this point in the history
  • Loading branch information
s-hadinger authored Mar 16, 2024
1 parent e218550 commit 130c3f8
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 12 deletions.
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

0 comments on commit 130c3f8

Please sign in to comment.