diff --git a/lib/libesp32_lvgl/lv_binding_berry/generate/LVGL_API_Reference.md b/lib/libesp32_lvgl/lv_binding_berry/generate/LVGL_API_Reference.md index e493e0597..f678f2064 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/generate/LVGL_API_Reference.md +++ b/lib/libesp32_lvgl/lv_binding_berry/generate/LVGL_API_Reference.md @@ -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) @@ -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) @@ -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) diff --git a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lv_c_mapping.h b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lv_c_mapping.h index 88dfab213..16efc3641 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lv_c_mapping.h +++ b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lv_c_mapping.h @@ -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" } }, @@ -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)" } }, @@ -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[] = { @@ -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; @@ -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 @@ -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)"); } diff --git a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c index ec254c33c..f7a439ea6 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c +++ b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_module.c @@ -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" } }, diff --git a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_widgets_lib.c b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_widgets_lib.c index d792f5278..ef304fbba 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_widgets_lib.c +++ b/lib/libesp32_lvgl/lv_binding_berry/generate/be_lvgl_widgets_lib.c @@ -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); @@ -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); @@ -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; @@ -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) } @@ -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 ********************************************************************/ diff --git a/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_funcs.h b/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_funcs.h index fe5974e0b..a909bd7b7 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_funcs.h +++ b/lib/libesp32_lvgl/lv_binding_berry/mapping/lv_funcs.h @@ -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) diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c index 5091f3096..82f1c30c7 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c +++ b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c @@ -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()` @@ -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; } \ No newline at end of file diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.h b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.h index ee336b977..369fc5808 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.h +++ b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.h @@ -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 diff --git a/lib/libesp32_lvgl/lv_binding_berry/tools/convert.py b/lib/libesp32_lvgl/lv_binding_berry/tools/convert.py index 3052b9911..11dd74cd8 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/tools/convert.py +++ b/lib/libesp32_lvgl/lv_binding_berry/tools/convert.py @@ -35,9 +35,10 @@ lv_widgets = ['obj', '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'] @@ -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", @@ -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", @@ -890,6 +891,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); @@ -922,6 +924,7 @@ print(""" 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) } diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 7dfc66918..73a2e58a5 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -1241,6 +1241,7 @@ https://rya.nc/tasmota-fingerprint.html" #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