From 334ff4c16fa278de370631a4a541e8ec2d83c71d Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 16 Jan 2022 10:43:11 +0100 Subject: [PATCH] LVGL more structs --- .../lv_berry/generate/be_lv_c_mapping.h | 2 + .../lv_berry/generate/be_lvgl_widgets_lib.c | 2 + .../lv_berry/src/be_lvgl_ctypes_definitions.c | 48 +++++++++++++++++++ .../lv_berry/src/embedded/lvgl_ctypes.be | 31 ++++++++++++ lib/libesp32_lvgl/lv_berry/tools/convert.py | 3 ++ 5 files changed, 86 insertions(+) diff --git a/lib/libesp32_lvgl/lv_berry/generate/be_lv_c_mapping.h b/lib/libesp32_lvgl/lv_berry/generate/be_lv_c_mapping.h index 78fae0221..77a5f2069 100644 --- a/lib/libesp32_lvgl/lv_berry/generate/be_lv_c_mapping.h +++ b/lib/libesp32_lvgl/lv_berry/generate/be_lv_c_mapping.h @@ -322,6 +322,7 @@ const be_ntv_func_def_t lv_obj_func[] = { { "get_style_transform_height", (void*) &lv_obj_get_style_transform_height, "i", "(lv.lv_obj)i" }, { "get_style_transform_width", (void*) &lv_obj_get_style_transform_width, "i", "(lv.lv_obj)i" }, { "get_style_transform_zoom", (void*) &lv_obj_get_style_transform_zoom, "i", "(lv.lv_obj)i" }, + { "get_style_transition", (void*) &lv_obj_get_style_transition, "lv.lv_style_transition_dsc", "(lv.lv_obj)i" }, { "get_style_translate_x", (void*) &lv_obj_get_style_translate_x, "i", "(lv.lv_obj)i" }, { "get_style_translate_y", (void*) &lv_obj_get_style_translate_y, "i", "(lv.lv_obj)i" }, { "get_style_width", (void*) &lv_obj_get_style_width, "i", "(lv.lv_obj)i" }, @@ -769,6 +770,7 @@ const be_ntv_func_def_t lv_canvas_func[] = { { "draw_rect", (void*) &lv_canvas_draw_rect, "", "(lv.lv_obj)iiii(lv.lv_draw_rect_dsc)" }, { "draw_text", (void*) &lv_canvas_draw_text, "", "(lv.lv_obj)iii(lv.lv_draw_label_dsc)s" }, { "fill_bg", (void*) &lv_canvas_fill_bg, "", "(lv.lv_obj)(lv.lv_color)i" }, + { "get_img", (void*) &lv_canvas_get_img, "lv.lv_img_dsc", "(lv.lv_obj)" }, { "get_px", (void*) &lv_canvas_get_px, "lv.lv_color", "(lv.lv_obj)ii" }, { "set_buffer", (void*) &lv_canvas_set_buffer, "", "(lv.lv_obj).iii" }, { "set_palette", (void*) &lv_canvas_set_palette, "", "(lv.lv_obj)i(lv.lv_color)" }, diff --git a/lib/libesp32_lvgl/lv_berry/generate/be_lvgl_widgets_lib.c b/lib/libesp32_lvgl/lv_berry/generate/be_lvgl_widgets_lib.c index b0eb9efe0..182e14f0c 100644 --- a/lib/libesp32_lvgl/lv_berry/generate/be_lvgl_widgets_lib.c +++ b/lib/libesp32_lvgl/lv_berry/generate/be_lvgl_widgets_lib.c @@ -320,6 +320,7 @@ extern int lvbe_obj_get_style_opa(bvm *vm); extern int lvbe_obj_get_style_color_filter_opa(bvm *vm); extern int lvbe_obj_get_style_anim_time(bvm *vm); extern int lvbe_obj_get_style_anim_speed(bvm *vm); +extern int lvbe_obj_get_style_transition(bvm *vm); extern int lvbe_obj_get_style_blend_mode(bvm *vm); extern int lvbe_obj_get_style_layout(bvm *vm); extern int lvbe_obj_get_style_base_dir(bvm *vm); @@ -729,6 +730,7 @@ extern int lvbe_canvas_set_px(bvm *vm); extern int lvbe_canvas_set_px_opa(bvm *vm); extern int lvbe_canvas_set_palette(bvm *vm); extern int lvbe_canvas_get_px(bvm *vm); +extern int lvbe_canvas_get_img(bvm *vm); extern int lvbe_canvas_copy_buf(bvm *vm); extern int lvbe_canvas_transform(bvm *vm); extern int lvbe_canvas_blur_hor(bvm *vm); diff --git a/lib/libesp32_lvgl/lv_berry/src/be_lvgl_ctypes_definitions.c b/lib/libesp32_lvgl/lv_berry/src/be_lvgl_ctypes_definitions.c index 3e21208bd..180166828 100644 --- a/lib/libesp32_lvgl/lv_berry/src/be_lvgl_ctypes_definitions.c +++ b/lib/libesp32_lvgl/lv_berry/src/be_lvgl_ctypes_definitions.c @@ -463,6 +463,45 @@ const be_ctypes_structure_t be_lv_event = { { "user_data", 12, 0, 0, ctypes_ptr32, 0 }, }}; +const be_ctypes_structure_t be_lv_img_header = { + 4, /* size in bytes */ + 5, /* number of elements */ + be_ctypes_instance_mappings, + (const be_ctypes_structure_item_t[5]) { + { "always_zero", 0, 5, 3, ctypes_bf, 0 }, + { "cf", 0, 0, 5, ctypes_bf, 0 }, + { "h", 2, 5, 11, ctypes_bf, 0 }, + { "reserved", 1, 0, 2, ctypes_bf, 0 }, + { "w", 1, 2, 11, ctypes_bf, 0 }, +}}; + +const be_ctypes_structure_t be_lv_img_dsc = { + 16, /* size in bytes */ + 8, /* number of elements */ + be_ctypes_instance_mappings, + (const be_ctypes_structure_item_t[8]) { + { "cf", 4, 0, 5, ctypes_bf, 0 }, + { "data", 12, 0, 0, ctypes_ptr32, 0 }, + { "data_size", 8, 0, 0, ctypes_u32, 0 }, + { "header_always_zero", 0, 5, 3, ctypes_bf, 0 }, + { "header_cf", 0, 0, 5, ctypes_bf, 0 }, + { "header_h", 2, 5, 11, ctypes_bf, 0 }, + { "header_reserved", 1, 0, 2, ctypes_bf, 0 }, + { "header_w", 1, 2, 11, ctypes_bf, 0 }, +}}; + +const be_ctypes_structure_t be_lv_style_transition_dsc = { + 20, /* size in bytes */ + 5, /* number of elements */ + be_ctypes_instance_mappings, + (const be_ctypes_structure_item_t[5]) { + { "delay", 16, 0, 0, ctypes_u32, 0 }, + { "path_xcb", 8, 0, 0, ctypes_ptr32, 0 }, + { "props", 0, 0, 0, ctypes_ptr32, 0 }, + { "time", 12, 0, 0, ctypes_u32, 0 }, + { "user_data", 4, 0, 0, ctypes_ptr32, 0 }, +}}; + const be_ctypes_structure_t be_lv_ts_calibration = { 12, /* size in bytes */ 5, /* number of elements */ @@ -499,6 +538,8 @@ static be_define_ctypes_class(lv_draw_mask_radius_param_cfg, &be_lv_draw_mask_ra static be_define_ctypes_class(lv_draw_mask_saved, &be_lv_draw_mask_saved, &be_class_ctypes, "lv_draw_mask_saved"); static be_define_ctypes_class(lv_draw_rect_dsc, &be_lv_draw_rect_dsc, &be_class_ctypes, "lv_draw_rect_dsc"); static be_define_ctypes_class(lv_event, &be_lv_event, &be_class_ctypes, "lv_event"); +static be_define_ctypes_class(lv_img_dsc, &be_lv_img_dsc, &be_class_ctypes, "lv_img_dsc"); +static be_define_ctypes_class(lv_img_header, &be_lv_img_header, &be_class_ctypes, "lv_img_header"); static be_define_ctypes_class(lv_meter_indicator, &be_lv_meter_indicator, &be_class_ctypes, "lv_meter_indicator"); static be_define_ctypes_class(lv_meter_indicator_arc, &be_lv_meter_indicator_arc, &be_class_ctypes, "lv_meter_indicator_arc"); static be_define_ctypes_class(lv_meter_indicator_needle_img, &be_lv_meter_indicator_needle_img, &be_class_ctypes, "lv_meter_indicator_needle_img"); @@ -508,6 +549,7 @@ static be_define_ctypes_class(lv_meter_scale, &be_lv_meter_scale, &be_class_ctyp static be_define_ctypes_class(lv_obj_class, &be_lv_obj_class, &be_class_ctypes, "lv_obj_class"); static be_define_ctypes_class(lv_point, &be_lv_point, &be_class_ctypes, "lv_point"); static be_define_ctypes_class(lv_sqrt_res, &be_lv_sqrt_res, &be_class_ctypes, "lv_sqrt_res"); +static be_define_ctypes_class(lv_style_transition_dsc, &be_lv_style_transition_dsc, &be_class_ctypes, "lv_style_transition_dsc"); static be_define_ctypes_class(lv_ts_calibration, &be_lv_ts_calibration, &be_class_ctypes, "lv_ts_calibration"); void be_load_ctypes_lvgl_definitions_lib(bvm *vm) { @@ -530,6 +572,8 @@ void be_load_ctypes_lvgl_definitions_lib(bvm *vm) { ctypes_register_class(vm, &be_class_lv_draw_mask_saved, &be_lv_draw_mask_saved); ctypes_register_class(vm, &be_class_lv_draw_rect_dsc, &be_lv_draw_rect_dsc); ctypes_register_class(vm, &be_class_lv_event, &be_lv_event); + ctypes_register_class(vm, &be_class_lv_img_dsc, &be_lv_img_dsc); + ctypes_register_class(vm, &be_class_lv_img_header, &be_lv_img_header); ctypes_register_class(vm, &be_class_lv_meter_indicator, &be_lv_meter_indicator); ctypes_register_class(vm, &be_class_lv_meter_indicator_arc, &be_lv_meter_indicator_arc); ctypes_register_class(vm, &be_class_lv_meter_indicator_needle_img, &be_lv_meter_indicator_needle_img); @@ -539,6 +583,7 @@ void be_load_ctypes_lvgl_definitions_lib(bvm *vm) { ctypes_register_class(vm, &be_class_lv_obj_class, &be_lv_obj_class); ctypes_register_class(vm, &be_class_lv_point, &be_lv_point); ctypes_register_class(vm, &be_class_lv_sqrt_res, &be_lv_sqrt_res); + ctypes_register_class(vm, &be_class_lv_style_transition_dsc, &be_lv_style_transition_dsc); ctypes_register_class(vm, &be_class_lv_ts_calibration, &be_lv_ts_calibration); } @@ -562,6 +607,8 @@ be_ctypes_class_by_name_t be_ctypes_lvgl_classes[] = { { "lv_draw_mask_saved", &be_class_lv_draw_mask_saved }, { "lv_draw_rect_dsc", &be_class_lv_draw_rect_dsc }, { "lv_event", &be_class_lv_event }, + { "lv_img_dsc", &be_class_lv_img_dsc }, + { "lv_img_header", &be_class_lv_img_header }, { "lv_meter_indicator", &be_class_lv_meter_indicator }, { "lv_meter_indicator_arc", &be_class_lv_meter_indicator_arc }, { "lv_meter_indicator_needle_img", &be_class_lv_meter_indicator_needle_img }, @@ -571,6 +618,7 @@ be_ctypes_class_by_name_t be_ctypes_lvgl_classes[] = { { "lv_obj_class", &be_class_lv_obj_class }, { "lv_point", &be_class_lv_point }, { "lv_sqrt_res", &be_class_lv_sqrt_res }, + { "lv_style_transition_dsc", &be_class_lv_style_transition_dsc }, { "lv_ts_calibration", &be_class_lv_ts_calibration }, }; const size_t be_ctypes_lvgl_classes_size = sizeof(be_ctypes_lvgl_classes)/sizeof(be_ctypes_lvgl_classes[0]); diff --git a/lib/libesp32_lvgl/lv_berry/src/embedded/lvgl_ctypes.be b/lib/libesp32_lvgl/lv_berry/src/embedded/lvgl_ctypes.be index 6198158e4..2b08450d1 100644 --- a/lib/libesp32_lvgl/lv_berry/src/embedded/lvgl_ctypes.be +++ b/lib/libesp32_lvgl/lv_berry/src/embedded/lvgl_ctypes.be @@ -30,6 +30,7 @@ uint8_t_2 = ctypes.bf_2 uint8_t_3 = ctypes.bf_3 uint8_t_4 = ctypes.bf_4 uint8_t_5 = ctypes.bf_5 +uint8_t_11 = ctypes.bf_11 uint8_t = ctypes.u8 int16_t = ctypes.i16 uint16_t = ctypes.u16 @@ -393,6 +394,36 @@ lv_event = [ # valid LVGL8 ] lv_event = ctypes.structure(lv_event, "lv_event") +####################################################################### +# lv_img structures +lv_img_header = [ # valid LVGL8 + [uint8_t_5, "cf"], + [uint8_t_3, "always_zero"], + [uint8_t_2, "reserved"], + [uint8_t_11, "w"], + [uint8_t_11, "h"], +] +lv_img_header = ctypes.structure(lv_img_header, "lv_img_header") + +lv_img_dsc = [ # valid LVGL8 + [lv_img_header, "header"], + [uint8_t_5, "cf"], + [uint32_t, "data_size"], + [ptr, "data"], +] +lv_img_dsc = ctypes.structure(lv_img_dsc, "lv_img_dsc") + +####################################################################### +# lv_style +lv_style_transition_dsc = [ # valid LVGL8 + [ptr, "props"], + [ptr, "user_data"], + [ptr, "path_xcb"], + [uint32_t, "time"], + [uint32_t, "delay"], +] +lv_style_transition_dsc = ctypes.structure(lv_style_transition_dsc, "lv_style_transition_dsc") + ####################################################################### # Special structure used to calibrate resistive touchscreens ####################################################################### diff --git a/lib/libesp32_lvgl/lv_berry/tools/convert.py b/lib/libesp32_lvgl/lv_berry/tools/convert.py index 2b5811bfb..0614812a4 100644 --- a/lib/libesp32_lvgl/lv_berry/tools/convert.py +++ b/lib/libesp32_lvgl/lv_berry/tools/convert.py @@ -135,7 +135,10 @@ return_types = { "lv_theme_t *": "lv_theme", "lv_disp_t *": "lv_disp", "lv_indev_t *": "lv_indev", + "lv_img_header_t *": "lv_img_header", + "lv_img_dsc_t *": "lv_img_dsc", "lv_ts_calibration_t *": "lv_ts_calibration", + "lv_style_transition_dsc_t *": "lv_style_transition_dsc", #"lv_disp_t*": "lv_disp", #"lv_style_list_t*": "",