From 2f3e8d40667d27bb9bb56778439787426cae3d9f Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Sat, 18 Nov 2023 15:33:58 +0100 Subject: [PATCH] feat(draw): add initial SDL renderer It caches SW rendered bitmaps in textures. The cache is also updated to support data and source separately. E.g. source is a path to an image, and if that image changes all related cache entries needs to found and invalidated. Limitations of SDL rederer: - not all draw task types are supported - image transformation is not supported - some textures (e.g. button matrix texts) are not detected as cached - images are not cached - images are supported only from path --- demos/vector_graphic/lv_demo_vector_graphic.c | 2 +- demos/widgets/lv_demo_widgets.c | 1 + examples/widgets/canvas/lv_example_canvas_1.c | 17 +- examples/widgets/canvas/lv_example_canvas_3.c | 4 +- examples/widgets/canvas/lv_example_canvas_4.c | 4 +- examples/widgets/canvas/lv_example_canvas_5.c | 4 +- examples/widgets/canvas/lv_example_canvas_6.c | 4 +- examples/widgets/canvas/lv_example_canvas_7.c | 4 +- examples/widgets/canvas/lv_example_canvas_8.c | 4 +- examples/widgets/img/lv_example_img_1.c | 10 +- lv_conf_template.h | 3 + src/core/lv_refr.c | 32 +- src/dev/sdl/lv_sdl_window.c | 17 + src/dev/sdl/lv_sdl_window.h | 3 + src/draw/lv_draw.c | 34 +- src/draw/lv_draw.h | 13 +- src/draw/lv_draw_image.c | 1 + src/draw/lv_draw_label.c | 1 + src/draw/lv_draw_rect.c | 11 + src/draw/lv_draw_vector.c | 8 +- src/draw/lv_image_decoder.h | 1 + src/draw/sdl/lv_draw_sdl.c | 400 ++++++++++++++++++ src/draw/sdl/lv_draw_sdl.h | 89 ++++ src/draw/sw/lv_draw_sw.c | 20 +- src/libs/barcode/lv_barcode.c | 14 +- src/libs/gif/lv_gif.c | 6 +- src/libs/libjpeg_turbo/lv_libjpeg_turbo.c | 30 +- src/libs/libpng/lv_libpng.c | 29 +- src/libs/lodepng/lv_lodepng.c | 24 +- src/libs/qrcode/lv_qrcode.c | 6 +- src/libs/tiny_ttf/lv_tiny_ttf.c | 49 ++- src/libs/tiny_ttf/lv_tiny_ttf.h | 1 + src/lv_conf_internal.h | 9 + src/lv_init.c | 4 + src/misc/lv_cache.c | 36 +- src/misc/lv_cache.h | 152 +++++-- src/misc/lv_cache_builtin.c | 56 ++- src/others/snapshot/lv_snapshot.c | 2 +- src/stdlib/builtin/lv_string_builtin.c | 9 + src/stdlib/clib/lv_string_clib.c | 5 + src/stdlib/lv_string.h | 15 + src/widgets/bar/lv_bar.c | 2 +- src/widgets/canvas/lv_canvas.c | 20 +- src/widgets/canvas/lv_canvas.h | 25 +- src/widgets/chart/lv_chart.c | 42 +- src/widgets/dropdown/lv_dropdown.c | 16 +- src/widgets/image/lv_image.c | 12 +- src/widgets/imgbtn/lv_imgbtn.c | 8 +- src/widgets/label/lv_label.c | 14 +- src/widgets/roller/lv_roller.c | 32 +- src/widgets/span/lv_span.c | 10 +- src/widgets/table/lv_table.c | 12 +- tests/ref_imgs/libs/tiny_ttf_1.png | Bin 16326 -> 16331 bytes .../image_rotate_and_scale_pivot_center.png | Bin 48338 -> 60052 bytes .../image_rotate_and_scale_pivot_top_left.png | Bin 48423 -> 60091 bytes .../widgets/image_transform_align.png | Bin 16771 -> 19482 bytes .../widgets/image_transform_align_offset.png | Bin 17173 -> 18896 bytes tests/src/test_cases/draw/test_draw_vector.c | 4 +- 58 files changed, 1049 insertions(+), 282 deletions(-) create mode 100644 src/draw/sdl/lv_draw_sdl.c create mode 100644 src/draw/sdl/lv_draw_sdl.h diff --git a/demos/vector_graphic/lv_demo_vector_graphic.c b/demos/vector_graphic/lv_demo_vector_graphic.c index 9aa8701854..f5171c408b 100644 --- a/demos/vector_graphic/lv_demo_vector_graphic.c +++ b/demos/vector_graphic/lv_demo_vector_graphic.c @@ -225,7 +225,7 @@ static void draw_vector(lv_layer_t * layer) void lv_demo_vector_graphic(void) { - static uint8_t canvas_buf[WIDTH * HEIGHT * 4]; + static uint8_t canvas_buf[LV_CANVAS_BUF_SIZE(WIDTH, HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; lv_obj_t * canvas = lv_canvas_create(lv_scr_act()); lv_canvas_set_buffer(canvas, canvas_buf, WIDTH, HEIGHT, LV_COLOR_FORMAT_ARGB8888); diff --git a/demos/widgets/lv_demo_widgets.c b/demos/widgets/lv_demo_widgets.c index a6806a300d..33e11ce937 100644 --- a/demos/widgets/lv_demo_widgets.c +++ b/demos/widgets/lv_demo_widgets.c @@ -249,6 +249,7 @@ static void profile_create(lv_obj_t * parent) LV_IMAGE_DECLARE(img_demo_widgets_avatar); lv_obj_t * avatar = lv_image_create(panel1); lv_image_set_src(avatar, &img_demo_widgets_avatar); + // lv_image_set_src(avatar, "A:lvgl/demos/widgets/assets/avatar.png") lv_obj_t * name = lv_label_create(panel1); lv_label_set_text(name, "Elena Smith"); diff --git a/examples/widgets/canvas/lv_example_canvas_1.c b/examples/widgets/canvas/lv_example_canvas_1.c index 92c820953c..ceada1b652 100644 --- a/examples/widgets/canvas/lv_example_canvas_1.c +++ b/examples/widgets/canvas/lv_example_canvas_1.c @@ -26,11 +26,11 @@ void lv_example_canvas_1(void) lv_draw_label_dsc_init(&label_dsc); label_dsc.color = lv_palette_main(LV_PALETTE_ORANGE); label_dsc.text = "Some text on text canvas"; - - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + /*Create a buffer for the canvas*/ + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 16, LV_DRAW_BUF_STRIDE_ALIGN)]; lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_RGB565); lv_obj_center(canvas); lv_canvas_fill_bg(canvas, lv_palette_lighten(LV_PALETTE_GREY, 3), LV_OPA_COVER); @@ -47,11 +47,18 @@ void lv_example_canvas_1(void) /*Test the rotation. It requires another buffer where the original image is stored. *So copy the current image to buffer and rotate it to the canvas*/ - static uint8_t cbuf_tmp[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf_tmp[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; + + /*Create a canvas and initialize its palette*/ + canvas = lv_canvas_create(lv_screen_active()); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); + lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); + lv_obj_center(canvas); + lv_memcpy(cbuf_tmp, cbuf, sizeof(cbuf_tmp)); lv_image_dsc_t img; img.data = (void *)cbuf_tmp; - img.header.cf = LV_COLOR_FORMAT_NATIVE; + img.header.cf = LV_COLOR_FORMAT_ARGB8888; img.header.w = CANVAS_WIDTH; img.header.h = CANVAS_HEIGHT; diff --git a/examples/widgets/canvas/lv_example_canvas_3.c b/examples/widgets/canvas/lv_example_canvas_3.c index 85049e423e..65ff564d62 100644 --- a/examples/widgets/canvas/lv_example_canvas_3.c +++ b/examples/widgets/canvas/lv_example_canvas_3.c @@ -10,11 +10,11 @@ void lv_example_canvas_3(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/canvas/lv_example_canvas_4.c b/examples/widgets/canvas/lv_example_canvas_4.c index a51b45b6a1..7b9403ffc8 100644 --- a/examples/widgets/canvas/lv_example_canvas_4.c +++ b/examples/widgets/canvas/lv_example_canvas_4.c @@ -10,11 +10,11 @@ void lv_example_canvas_4(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/canvas/lv_example_canvas_5.c b/examples/widgets/canvas/lv_example_canvas_5.c index 5a32d8c025..34a52e0f8b 100644 --- a/examples/widgets/canvas/lv_example_canvas_5.c +++ b/examples/widgets/canvas/lv_example_canvas_5.c @@ -10,11 +10,11 @@ void lv_example_canvas_5(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/canvas/lv_example_canvas_6.c b/examples/widgets/canvas/lv_example_canvas_6.c index 34e9ecf484..c3edf7858d 100644 --- a/examples/widgets/canvas/lv_example_canvas_6.c +++ b/examples/widgets/canvas/lv_example_canvas_6.c @@ -10,11 +10,11 @@ void lv_example_canvas_6(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/canvas/lv_example_canvas_7.c b/examples/widgets/canvas/lv_example_canvas_7.c index da655b7fcb..7bf29c40f4 100644 --- a/examples/widgets/canvas/lv_example_canvas_7.c +++ b/examples/widgets/canvas/lv_example_canvas_7.c @@ -10,11 +10,11 @@ void lv_example_canvas_7(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/canvas/lv_example_canvas_8.c b/examples/widgets/canvas/lv_example_canvas_8.c index 1022d47290..3bebdf69d2 100644 --- a/examples/widgets/canvas/lv_example_canvas_8.c +++ b/examples/widgets/canvas/lv_example_canvas_8.c @@ -12,11 +12,11 @@ void lv_example_canvas_8(void) { /*Create a buffer for the canvas*/ - static uint8_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)]; + static uint8_t cbuf[LV_CANVAS_BUF_SIZE(CANVAS_WIDTH, CANVAS_HEIGHT, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; /*Create a canvas and initialize its palette*/ lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_NATIVE); + lv_canvas_set_buffer(canvas, cbuf, CANVAS_WIDTH, CANVAS_HEIGHT, LV_COLOR_FORMAT_ARGB8888); lv_canvas_fill_bg(canvas, lv_color_hex3(0xccc), LV_OPA_COVER); lv_obj_center(canvas); diff --git a/examples/widgets/img/lv_example_img_1.c b/examples/widgets/img/lv_example_img_1.c index e516f4df64..96e8da6fae 100644 --- a/examples/widgets/img/lv_example_img_1.c +++ b/examples/widgets/img/lv_example_img_1.c @@ -5,13 +5,17 @@ void lv_example_image_1(void) { LV_IMAGE_DECLARE(img_cogwheel_argb); lv_obj_t * img1 = lv_image_create(lv_screen_active()); - lv_image_set_src(img1, &img_cogwheel_argb); - lv_obj_align(img1, LV_ALIGN_CENTER, 0, -20); - lv_obj_set_size(img1, 200, 200); + lv_image_set_src(img1, "A:lvgl/demos/widgets/assets/avatar.png"); + lv_obj_align(img1, LV_ALIGN_CENTER, 0, 0); + lv_image_set_scale_x(img1, 512); + lv_image_set_scale_y(img1, 128); + lv_image_set_rotation(img1, 10); lv_obj_t * img2 = lv_image_create(lv_screen_active()); lv_image_set_src(img2, LV_SYMBOL_OK "Accept"); lv_obj_align_to(img2, img1, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); + + lv_obj_set_style_bg_opa(img1, 100, 0); } #endif diff --git a/lv_conf_template.h b/lv_conf_template.h index f488fd12b1..c8dd84802e 100644 --- a/lv_conf_template.h +++ b/lv_conf_template.h @@ -127,6 +127,9 @@ /* Use NXP's PXP on iMX RTxxx platforms. */ #define LV_USE_DRAW_PXP 0 +/* Draw using cached SDL textures*/ +#define LV_USE_DRAW_SDL 0 + /*================= * OPERATING SYSTEM *=================*/ diff --git a/src/core/lv_refr.c b/src/core/lv_refr.c index 950b2190e6..d1bcf5880c 100644 --- a/src/core/lv_refr.c +++ b/src/core/lv_refr.c @@ -93,7 +93,7 @@ void lv_refr_now(lv_display_t * disp) void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) { - lv_area_t clip_area_ori = layer->clip_area; + lv_area_t clip_area_ori = layer->_clip_area; lv_area_t clip_coords_for_obj; /*Truncate the clip area to `obj size + ext size` area*/ @@ -104,7 +104,7 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) if(!_lv_area_intersect(&clip_coords_for_obj, &clip_area_ori, &obj_coords_ext)) return; /*If the object is visible on the current clip area*/ - layer->clip_area = clip_coords_for_obj; + layer->_clip_area = clip_coords_for_obj; lv_obj_send_event(obj, LV_EVENT_DRAW_MAIN_BEGIN, layer); lv_obj_send_event(obj, LV_EVENT_DRAW_MAIN, layer); @@ -139,14 +139,14 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) uint32_t child_cnt = lv_obj_get_child_count(obj); if(child_cnt == 0) { /*If the object was visible on the clip area call the post draw events too*/ - layer->clip_area = clip_coords_for_obj; + layer->_clip_area = clip_coords_for_obj; /*If all the children are redrawn make 'post draw' draw*/ lv_obj_send_event(obj, LV_EVENT_DRAW_POST_BEGIN, layer); lv_obj_send_event(obj, LV_EVENT_DRAW_POST, layer); lv_obj_send_event(obj, LV_EVENT_DRAW_POST_END, layer); } else { - layer->clip_area = clip_coords_for_children; + layer->_clip_area = clip_coords_for_children; bool clip_corner = lv_obj_get_style_clip_corner(obj, LV_PART_MAIN); int32_t radius = 0; @@ -162,7 +162,7 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) } /*If the object was visible on the clip area call the post draw events too*/ - layer->clip_area = clip_coords_for_obj; + layer->_clip_area = clip_coords_for_obj; /*If all the children are redrawn make 'post draw' draw*/ lv_obj_send_event(obj, LV_EVENT_DRAW_POST_BEGIN, layer); lv_obj_send_event(obj, LV_EVENT_DRAW_POST, layer); @@ -228,7 +228,7 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) mid.y1 += rout; mid.y2 -= rout; if(_lv_area_intersect(&mid, &mid, &clip_area_ori)) { - layer->clip_area = mid; + layer->_clip_area = mid; for(i = 0; i < child_cnt; i++) { lv_obj_t * child = obj->spec_attr->children[i]; refr_obj(layer, child); @@ -245,7 +245,7 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } /** @@ -606,12 +606,12 @@ static void refr_area(const lv_area_t * area_p) if(disp_refr->render_mode == LV_DISPLAY_RENDER_MODE_FULL) { disp_refr->last_part = 1; - layer->clip_area = disp_area; + layer->_clip_area = disp_area; refr_area_part(layer); } else if(disp_refr->render_mode == LV_DISPLAY_RENDER_MODE_DIRECT) { disp_refr->last_part = disp_refr->last_area; - layer->clip_area = *area_p; + layer->_clip_area = *area_p; refr_area_part(layer); } return; @@ -638,7 +638,7 @@ static void refr_area(const lv_area_t * area_p) layer->buf = disp_refr->buf_act; layer->buf_area = sub_area; layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format); - layer->clip_area = sub_area; + layer->_clip_area = sub_area; if(sub_area.y2 > y2) sub_area.y2 = y2; row_last = sub_area.y2; if(y2 == row_last) disp_refr->last_part = 1; @@ -654,7 +654,7 @@ static void refr_area(const lv_area_t * area_p) sub_area.y2 = y2; layer->buf = disp_refr->buf_act; layer->buf_area = sub_area; - layer->clip_area = sub_area; + layer->_clip_area = sub_area; disp_refr->last_part = 1; refr_area_part(layer); } @@ -662,7 +662,7 @@ static void refr_area(const lv_area_t * area_p) static void refr_area_part(lv_layer_t * layer) { - disp_refr->refreshed_area = layer->clip_area; + disp_refr->refreshed_area = layer->_clip_area; /* In single buffered mode wait here until the buffer is freed. * Else we would draw into the buffer while it's still being transferred to the display*/ @@ -680,9 +680,9 @@ static void refr_area_part(lv_layer_t * layer) lv_obj_t * top_prev_scr = NULL; /*Get the most top object which is not covered by others*/ - top_act_scr = lv_refr_get_top_obj(&layer->clip_area, lv_display_get_screen_active(disp_refr)); + top_act_scr = lv_refr_get_top_obj(&layer->_clip_area, lv_display_get_screen_active(disp_refr)); if(disp_refr->prev_scr) { - top_prev_scr = lv_refr_get_top_obj(&layer->clip_area, disp_refr->prev_scr); + top_prev_scr = lv_refr_get_top_obj(&layer->_clip_area, disp_refr->prev_scr); } /*Draw a bottom layer background if there is no top object*/ @@ -824,7 +824,7 @@ static lv_result_t layer_get_area(lv_layer_t * layer, lv_obj_t * obj, lv_layer_t lv_area_t clip_coords_for_obj; lv_area_t tranf_coords = obj_coords_ext; lv_obj_get_transformed_area(obj, &tranf_coords, false, false); - if(!_lv_area_intersect(&clip_coords_for_obj, &layer->clip_area, &tranf_coords)) { + if(!_lv_area_intersect(&clip_coords_for_obj, &layer->_clip_area, &tranf_coords)) { return LV_RESULT_INVALID; } @@ -842,7 +842,7 @@ static lv_result_t layer_get_area(lv_layer_t * layer, lv_obj_t * obj, lv_layer_t } else if(layer_type == LV_LAYER_TYPE_SIMPLE) { lv_area_t clip_coords_for_obj; - if(!_lv_area_intersect(&clip_coords_for_obj, &layer->clip_area, &obj_coords_ext)) { + if(!_lv_area_intersect(&clip_coords_for_obj, &layer->_clip_area, &obj_coords_ext)) { return LV_RESULT_INVALID; } *layer_area_out = clip_coords_for_obj; diff --git a/src/dev/sdl/lv_sdl_window.c b/src/dev/sdl/lv_sdl_window.c index f9fbd71d93..f0465efecd 100644 --- a/src/dev/sdl/lv_sdl_window.c +++ b/src/dev/sdl/lv_sdl_window.c @@ -15,6 +15,8 @@ #define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/ #include LV_SDL_INCLUDE_PATH +#include + /********************* * DEFINES *********************/ @@ -74,6 +76,12 @@ lv_display_t * lv_sdl_window_create(int32_t hor_res, int32_t ver_res) SDL_StartTextInput(); event_handler_timer = lv_timer_create(sdl_event_handler, 5, NULL); lv_tick_set_cb(SDL_GetTicks); + + if(!(IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG)) { + fprintf(stderr, "could not initialize sdl2_image: %s\n", IMG_GetError()); + return NULL; + } + inited = true; } @@ -147,6 +155,12 @@ void lv_sdl_window_set_title(lv_display_t * disp, const char * title) SDL_SetWindowTitle(dsc->window, title); } +SDL_Renderer * lv_sdl_window_get_renderer(lv_display_t * disp) +{ + lv_sdl_window_t * dsc = lv_display_get_driver_data(disp); + return dsc->renderer; +} + void lv_sdl_quit() { if(inited) { @@ -260,6 +274,7 @@ static void window_create(lv_display_t * disp) dsc->renderer = SDL_CreateRenderer(dsc->window, -1, SDL_RENDERER_SOFTWARE); texture_resize(disp); + uint32_t px_size = lv_color_format_get_size(lv_display_get_color_format(disp)); lv_memset(dsc->fb1, 0xff, hor_res * ver_res * px_size); #if LV_SDL_DIRECT_MODE_2_BUF @@ -273,6 +288,7 @@ static void window_create(lv_display_t * disp) static void window_update(lv_display_t * disp) { lv_sdl_window_t * dsc = lv_display_get_driver_data(disp); +#if LV_USE_DRAW_SDL == 0 int32_t hor_res = lv_display_get_horizontal_resolution(disp); uint32_t stride = lv_draw_buf_width_to_stride(hor_res, lv_display_get_color_format(disp)); SDL_UpdateTexture(dsc->texture, NULL, dsc->fb_act, stride); @@ -281,6 +297,7 @@ static void window_update(lv_display_t * disp) /*Update the renderer with the texture containing the rendered image*/ SDL_RenderCopy(dsc->renderer, dsc->texture, NULL, NULL); +#endif SDL_RenderPresent(dsc->renderer); } diff --git a/src/dev/sdl/lv_sdl_window.h b/src/dev/sdl/lv_sdl_window.h index 7656858964..7f97ab22e0 100644 --- a/src/dev/sdl/lv_sdl_window.h +++ b/src/dev/sdl/lv_sdl_window.h @@ -18,6 +18,7 @@ extern "C" { #include "../../indev/lv_indev.h" #if LV_USE_SDL +#include LV_SDL_INCLUDE_PATH /********************* * DEFINES @@ -41,6 +42,8 @@ lv_display_t * _lv_sdl_get_disp_from_win_id(uint32_t win_id); void lv_sdl_window_set_title(lv_display_t * disp, const char * title); +SDL_Renderer * lv_sdl_window_get_renderer(lv_display_t * disp); + void lv_sdl_quit(); /********************** diff --git a/src/draw/lv_draw.c b/src/draw/lv_draw.c index 63ca87030b..dc9b40d2c8 100644 --- a/src/draw/lv_draw.c +++ b/src/draw/lv_draw.c @@ -83,7 +83,7 @@ lv_draw_task_t * lv_draw_add_task(lv_layer_t * layer, const lv_area_t * coords) lv_draw_task_t * new_task = lv_malloc_zeroed(sizeof(lv_draw_task_t)); new_task->area = *coords; - new_task->clip_area = layer->clip_area; + new_task->clip_area = layer->_clip_area; new_task->state = LV_DRAW_TASK_STATE_QUEUED; /*Find the tail*/ @@ -110,13 +110,14 @@ void lv_draw_finalize_task_creation(lv_layer_t * layer, lv_draw_task_t * t) /*Send LV_EVENT_DRAW_TASK_ADDED and dispatch only on the "main" draw_task *and not on the draw tasks added in the event. - *Sending LV_EVENT_DRAW_TASK_ADDED events might cause recursive event sends - *Dispatching might remove the "main" draw task while it's still being used in the event*/ + *Sending LV_EVENT_DRAW_TASK_ADDED events might cause recursive event sends and besides + *dispatching might remove the "main" draw task while it's still being used in the event*/ if(info->task_running == false) { - info->task_running = true; if(base_dsc->obj && lv_obj_has_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS)) { + info->task_running = true; lv_obj_send_event(base_dsc->obj, LV_EVENT_DRAW_TASK_ADDED, t); + info->task_running = false; } /*Let the draw units set their preference score*/ @@ -129,7 +130,6 @@ void lv_draw_finalize_task_creation(lv_layer_t * layer, lv_draw_task_t * t) } lv_draw_dispatch(); - info->task_running = false; } else { /*Let the draw units set their preference score*/ @@ -292,17 +292,17 @@ lv_draw_task_t * lv_draw_get_next_available_task(lv_layer_t * layer, lv_draw_tas { LV_PROFILER_BEGIN; /*If the first task is screen sized, there cannot be independent areas*/ - if(layer->draw_task_head) { - int32_t hor_res = lv_display_get_horizontal_resolution(_lv_refr_get_disp_refreshing()); - int32_t ver_res = lv_display_get_vertical_resolution(_lv_refr_get_disp_refreshing()); - lv_draw_task_t * t = layer->draw_task_head; - if(t->state != LV_DRAW_TASK_STATE_QUEUED && - t->area.x1 <= 0 && t->area.x2 >= hor_res - 1 && - t->area.y1 <= 0 && t->area.y2 >= ver_res - 1) { - LV_PROFILER_END; - return NULL; - } - } + // if(layer->draw_task_head) { + // int32_t hor_res = lv_display_get_horizontal_resolution(_lv_refr_get_disp_refreshing()); + // int32_t ver_res = lv_display_get_vertical_resolution(_lv_refr_get_disp_refreshing()); + // lv_draw_task_t * t = layer->draw_task_head; + // if(t->state != LV_DRAW_TASK_STATE_QUEUED && + // t->area.x1 <= 0 && t->area.x2 >= hor_res - 1 && + // t->area.y1 <= 0 && t->area.y2 >= ver_res - 1) { + // LV_PROFILER_END; + // return NULL; + // } + // } lv_draw_task_t * t = t_prev ? t_prev->next : layer->draw_task_head; while(t) { @@ -328,7 +328,7 @@ lv_layer_t * lv_draw_layer_create(lv_layer_t * parent_layer, lv_color_format_t c if(new_layer == NULL) return NULL; new_layer->parent = parent_layer; - new_layer->clip_area = *area; + new_layer->_clip_area = *area; new_layer->buf_area = *area; new_layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(area), color_format); new_layer->color_format = color_format; diff --git a/src/draw/lv_draw.h b/src/draw/lv_draw.h index 6ee9a36d19..c729f1c2e2 100644 --- a/src/draw/lv_draw.h +++ b/src/draw/lv_draw.h @@ -152,21 +152,24 @@ typedef struct _lv_layer_t { void * buf; uint32_t buf_stride; + + /** The absolute coordinates of the buffer */ lv_area_t buf_area; + + /** The color format of the layer. LV_COLOR_FORMAT_... */ lv_color_format_t color_format; /** + * NEVER USE IT DRAW UNITS. USED INTERNALLY DURING DRAW TASK CREATION. * The current clip area with absolute coordinates, always the same or smaller than `buf_area` * Can be set before new draw tasks are added to indicate the clip area of the draw tasks. * Therefore `lv_draw_add_task()` always saves it in the new draw task to know the clip area when the draw task was added. * During drawing the draw units also sees the saved clip_area and should use it during drawing. * During drawing the layer's clip area shouldn't be used as it might be already changed for other draw tasks. */ - lv_area_t clip_area; + lv_area_t _clip_area; - /** - * Linked list of draw tasks - */ + /** Linked list of draw tasks */ lv_draw_task_t * draw_task_head; struct _lv_layer_t * parent; @@ -181,6 +184,8 @@ typedef struct { uint32_t id1; uint32_t id2; lv_layer_t * layer; + size_t dsc_size; + void * user_data; } lv_draw_dsc_base_t; typedef struct { diff --git a/src/draw/lv_draw_image.c b/src/draw/lv_draw_image.c index 9f94a15174..527825c99d 100644 --- a/src/draw/lv_draw_image.c +++ b/src/draw/lv_draw_image.c @@ -46,6 +46,7 @@ void lv_draw_image_dsc_init(lv_draw_image_dsc_t * dsc) dsc->scale_x = LV_SCALE_NONE; dsc->scale_y = LV_SCALE_NONE; dsc->antialias = LV_COLOR_DEPTH > 8 ? 1 : 0; + dsc->base.dsc_size = sizeof(lv_draw_image_dsc_t); } void lv_draw_layer(lv_layer_t * layer, const lv_draw_image_dsc_t * dsc, const lv_area_t * coords) diff --git a/src/draw/lv_draw_label.c b/src/draw/lv_draw_label.c index 7ad6ed65ca..cc215ae2ae 100644 --- a/src/draw/lv_draw_label.c +++ b/src/draw/lv_draw_label.c @@ -58,6 +58,7 @@ void lv_draw_label_dsc_init(lv_draw_label_dsc_t * dsc) dsc->sel_color = lv_color_black(); dsc->sel_bg_color = lv_palette_main(LV_PALETTE_BLUE); dsc->bidi_dir = LV_BASE_DIR_LTR; + dsc->base.dsc_size = sizeof(lv_draw_label_dsc_t); } void lv_draw_letter_dsc_init(lv_draw_glyph_dsc_t * dsc) diff --git a/src/draw/lv_draw_rect.c b/src/draw/lv_draw_rect.c index 682f4eca59..f5cafb880f 100644 --- a/src/draw/lv_draw_rect.c +++ b/src/draw/lv_draw_rect.c @@ -59,6 +59,7 @@ void lv_draw_fill_dsc_init(lv_draw_fill_dsc_t * dsc) { lv_memzero(dsc, sizeof(*dsc)); dsc->opa = LV_OPA_COVER; + dsc->base.dsc_size = sizeof(lv_draw_fill_dsc_t); } void lv_draw_border_dsc_init(lv_draw_border_dsc_t * dsc) @@ -66,18 +67,21 @@ void lv_draw_border_dsc_init(lv_draw_border_dsc_t * dsc) lv_memzero(dsc, sizeof(*dsc)); dsc->opa = LV_OPA_COVER; dsc->side = LV_BORDER_SIDE_FULL; + dsc->base.dsc_size = sizeof(lv_draw_border_dsc_t); } void lv_draw_box_shadow_dsc_init(lv_draw_box_shadow_dsc_t * dsc) { lv_memzero(dsc, sizeof(*dsc)); dsc->opa = LV_OPA_COVER; + dsc->base.dsc_size = sizeof(lv_draw_box_shadow_dsc_t); } void lv_draw_bg_image_dsc_init(lv_draw_bg_image_dsc_t * dsc) { lv_memzero(dsc, sizeof(*dsc)); dsc->opa = LV_OPA_COVER; + dsc->base.dsc_size = sizeof(lv_draw_bg_image_dsc_t); } void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords) @@ -133,6 +137,7 @@ void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_a lv_draw_box_shadow_dsc_t * shadow_dsc = lv_malloc(sizeof(lv_draw_box_shadow_dsc_t)); t->draw_dsc = shadow_dsc; shadow_dsc->base = dsc->base; + shadow_dsc->base.dsc_size = sizeof(lv_draw_box_shadow_dsc_t); shadow_dsc->radius = dsc->radius; shadow_dsc->color = dsc->shadow_color; shadow_dsc->width = dsc->shadow_width; @@ -158,13 +163,16 @@ void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_a t = lv_draw_add_task(layer, &bg_coords); lv_draw_fill_dsc_t * bg_dsc = lv_malloc(sizeof(lv_draw_fill_dsc_t)); + lv_draw_fill_dsc_init(bg_dsc); t->draw_dsc = bg_dsc; bg_dsc->base = dsc->base; + bg_dsc->base.dsc_size = sizeof(lv_draw_fill_dsc_t); bg_dsc->radius = dsc->radius; bg_dsc->color = dsc->bg_color; bg_dsc->grad = dsc->bg_grad; bg_dsc->opa = dsc->bg_opa; t->type = LV_DRAW_TASK_TYPE_FILL; + lv_draw_finalize_task_creation(layer, t); } @@ -190,6 +198,7 @@ void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_a lv_draw_bg_image_dsc_t * bg_image_dsc = lv_malloc(sizeof(lv_draw_bg_image_dsc_t)); t->draw_dsc = bg_image_dsc; bg_image_dsc->base = dsc->base; + bg_image_dsc->base.dsc_size = sizeof(lv_draw_bg_image_dsc_t); bg_image_dsc->radius = dsc->radius; bg_image_dsc->src = dsc->bg_image_src; bg_image_dsc->font = dsc->bg_image_symbol_font; @@ -209,6 +218,7 @@ void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_a lv_draw_border_dsc_t * border_dsc = lv_malloc(sizeof(lv_draw_border_dsc_t)); t->draw_dsc = border_dsc; border_dsc->base = dsc->base; + border_dsc->base.dsc_size = sizeof(lv_draw_border_dsc_t); border_dsc->radius = dsc->radius; border_dsc->color = dsc->border_color; border_dsc->opa = dsc->border_opa; @@ -226,6 +236,7 @@ void lv_draw_rect(lv_layer_t * layer, const lv_draw_rect_dsc_t * dsc, const lv_a lv_draw_border_dsc_t * outline_dsc = lv_malloc(sizeof(lv_draw_border_dsc_t)); t->draw_dsc = outline_dsc; outline_dsc->base = dsc->base; + outline_dsc->base.dsc_size = sizeof(lv_draw_border_dsc_t); outline_dsc->radius = dsc->radius == LV_RADIUS_CIRCLE ? LV_RADIUS_CIRCLE : dsc->radius + dsc->outline_width + dsc->outline_pad; outline_dsc->color = dsc->outline_color; diff --git a/src/draw/lv_draw_vector.c b/src/draw/lv_draw_vector.c index 34d221eaf1..b43a41b1b2 100644 --- a/src/draw/lv_draw_vector.c +++ b/src/draw/lv_draw_vector.c @@ -476,7 +476,7 @@ lv_vector_dsc_t * lv_vector_dsc_create(lv_layer_t * layer) lv_matrix_identity(&(stroke_dsc->matrix)); // identity matrix dsc->current_dsc.blend_mode = LV_VECTOR_BLEND_SRC_OVER; - dsc->current_dsc.scissor_area = layer->clip_area; + dsc->current_dsc.scissor_area = layer->_clip_area; lv_matrix_identity(&(dsc->current_dsc.matrix)); // identity matrix dsc->tasks.task_list = NULL; return dsc; @@ -638,7 +638,7 @@ void lv_vector_dsc_set_stroke_radial_gradient(lv_vector_dsc_t * dsc, const lv_gr void lv_vector_dsc_add_path(lv_vector_dsc_t * dsc, const lv_vector_path_t * path) { lv_area_t rect; - if(!_lv_area_intersect(&rect, &(dsc->layer->clip_area), &(dsc->current_dsc.scissor_area))) { + if(!_lv_area_intersect(&rect, &(dsc->layer->_clip_area), &(dsc->current_dsc.scissor_area))) { return; } @@ -666,7 +666,7 @@ void lv_vector_dsc_add_path(lv_vector_dsc_t * dsc, const lv_vector_path_t * path void lv_vector_clear_area(lv_vector_dsc_t * dsc, const lv_area_t * rect) { lv_area_t r; - if(!_lv_area_intersect(&r, &(dsc->layer->clip_area), &(dsc->current_dsc.scissor_area))) { + if(!_lv_area_intersect(&r, &(dsc->layer->_clip_area), &(dsc->current_dsc.scissor_area))) { return; } @@ -691,7 +691,7 @@ void lv_draw_vector(lv_vector_dsc_t * dsc) lv_layer_t * layer = dsc->layer; - lv_draw_task_t * t = lv_draw_add_task(layer, &(layer->clip_area)); + lv_draw_task_t * t = lv_draw_add_task(layer, &(layer->_clip_area)); t->type = LV_DRAW_TASK_TYPE_VECTOR; t->draw_dsc = lv_malloc(sizeof(lv_draw_vector_task_dsc_t)); lv_memcpy(t->draw_dsc, &(dsc->tasks), sizeof(lv_draw_vector_task_dsc_t)); diff --git a/src/draw/lv_image_decoder.h b/src/draw/lv_image_decoder.h index 4d966099cb..1a5bb40b10 100644 --- a/src/draw/lv_image_decoder.h +++ b/src/draw/lv_image_decoder.h @@ -94,6 +94,7 @@ typedef struct _lv_image_decoder_t { lv_image_decoder_open_f_t open_cb; lv_image_decoder_get_area_cb_t get_area_cb; lv_image_decoder_close_f_t close_cb; + uint32_t cache_data_type; void * user_data; } lv_image_decoder_t; diff --git a/src/draw/sdl/lv_draw_sdl.c b/src/draw/sdl/lv_draw_sdl.c new file mode 100644 index 0000000000..f392486947 --- /dev/null +++ b/src/draw/sdl/lv_draw_sdl.c @@ -0,0 +1,400 @@ +/** + * @file lv_draw_sdl.c + * + */ + +/********************* + * INCLUDES + *********************/ +#include "../lv_draw.h" +#if LV_USE_DRAW_SDL +#include LV_SDL_INCLUDE_PATH +#include + +#include "lv_draw_sdl.h" +#include "../../core/lv_refr.h" +#include "../../display/lv_display_private.h" +#include "../../stdlib/lv_string.h" +#include "../../dev/sdl/lv_sdl_window.h" + +/********************* + * DEFINES + *********************/ +#define DRAW_UNIT_ID_SDL 100 + +/********************** + * TYPEDEFS + **********************/ +typedef struct { + lv_draw_dsc_base_t * draw_dsc; + int32_t w; + int32_t h; + SDL_Texture * texture; +} cache_data_t; + +/********************** + * STATIC PROTOTYPES + **********************/ +static void execute_drawing(lv_draw_sdl_unit_t * u); + +static int32_t dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); + +static int32_t evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * task); + +/********************** + * GLOBAL PROTOTYPES + **********************/ +static uint8_t sdl_render_buf[2048 * 1024 * 4]; + +/********************** + * STATIC VARIABLES + **********************/ +static SDL_Texture * layer_get_texture(lv_layer_t * layer); + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +void lv_draw_sdl_init(void) +{ + lv_draw_sdl_unit_t * draw_sdl_unit = lv_draw_create_unit(sizeof(lv_draw_sdl_unit_t)); + draw_sdl_unit->base_unit.dispatch_cb = dispatch; + draw_sdl_unit->base_unit.evaluate_cb = evaluate; + draw_sdl_unit->texture_cache_data_type = lv_cache_register_data_type(); +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +static int32_t dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) +{ + lv_draw_sdl_unit_t * draw_sdl_unit = (lv_draw_sdl_unit_t *) draw_unit; + + /*Return immediately if it's busy with a draw task*/ + if(draw_sdl_unit->task_act) return 0; + + lv_draw_task_t * t = NULL; + t = lv_draw_get_next_available_task(layer, NULL, DRAW_UNIT_ID_SDL); + if(t == NULL) return -1; + + lv_display_t * disp = _lv_refr_get_disp_refreshing(); + SDL_Texture * texture = layer_get_texture(layer); + if(layer != disp->layer_head && texture == NULL) { + void * buf = lv_draw_layer_alloc_buf(layer); + if(buf == NULL) return -1; + + SDL_Renderer * renderer = lv_sdl_window_get_renderer(disp); + int32_t w = lv_area_get_width(&layer->buf_area); + int32_t h = lv_area_get_height(&layer->buf_area); + layer->user_data = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, + SDL_TEXTUREACCESS_TARGET, w, h); + } + + t->state = LV_DRAW_TASK_STATE_IN_PROGRESS; + draw_sdl_unit->base_unit.target_layer = layer; + draw_sdl_unit->base_unit.clip_area = &t->clip_area; + draw_sdl_unit->task_act = t; + + execute_drawing(draw_sdl_unit); + + draw_sdl_unit->task_act->state = LV_DRAW_TASK_STATE_READY; + draw_sdl_unit->task_act = NULL; + + /*The draw unit is free now. Request a new dispatching as it can get a new task*/ + lv_draw_dispatch_request(); + return 1; +} + +static int32_t evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * task) +{ + LV_UNUSED(draw_unit); + + if(((lv_draw_dsc_base_t *)task->draw_dsc)->user_data == NULL) { + task->preference_score = 0; + task->preferred_draw_unit_id = DRAW_UNIT_ID_SDL; + } + return 0; +} + +bool compare_cb(const void * data1, const void * data2, size_t data_size) +{ + LV_UNUSED(data_size); + const cache_data_t * d1 = data1; + const cache_data_t * d2 = data2; + + if(d1->w != d2->w) return false; + if(d1->h != d2->h) return false; + + if(d1->draw_dsc->dsc_size != d2->draw_dsc->dsc_size) return false; + + if(memcmp(d1->draw_dsc, d2->draw_dsc, d1->draw_dsc->dsc_size)) return false; + + return true; + +} + +void invalidate_cb(lv_cache_entry_t * e) +{ + const cache_data_t * d = e->data; + lv_free((void *)d->draw_dsc); + SDL_DestroyTexture(d->texture); + lv_free((void *)d); + e->data = NULL; + e->data_size = 0; +} + +static lv_cache_entry_t * draw_to_texture(lv_draw_sdl_unit_t * u) +{ + lv_draw_task_t * task = u->task_act; + + lv_layer_t dest_layer; + lv_memzero(&dest_layer, sizeof(dest_layer)); + dest_layer.buf = lv_draw_buf_align(sdl_render_buf, LV_COLOR_FORMAT_ARGB8888); + dest_layer.color_format = LV_COLOR_FORMAT_ARGB8888; + + lv_area_t a; + _lv_area_intersect(&a, u->base_unit.clip_area, &task->area); + dest_layer.buf_area = task->area; + dest_layer._clip_area = task->area; + lv_memzero(sdl_render_buf, lv_area_get_size(&dest_layer.buf_area) * 4 + 100); + + lv_display_t * disp = _lv_refr_get_disp_refreshing(); + + uint32_t tick = lv_tick_get(); + SDL_Texture * texture = NULL; + switch(task->type) { + case LV_DRAW_TASK_TYPE_FILL: { + lv_draw_fill_dsc_t * fill_dsc = task->draw_dsc; + lv_draw_rect_dsc_t rect_dsc; + lv_draw_rect_dsc_init(&rect_dsc); + rect_dsc.base.user_data = lv_sdl_window_get_renderer(disp); + rect_dsc.bg_color = fill_dsc->color; + rect_dsc.bg_grad = fill_dsc->grad; + rect_dsc.radius = fill_dsc->radius; + rect_dsc.bg_opa = fill_dsc->opa; + + lv_draw_rect(&dest_layer, &rect_dsc, &task->area); + } + break; + case LV_DRAW_TASK_TYPE_BORDER: { + lv_draw_border_dsc_t * border_dsc = task->draw_dsc;; + lv_draw_rect_dsc_t rect_dsc; + lv_draw_rect_dsc_init(&rect_dsc); + rect_dsc.base.user_data = lv_sdl_window_get_renderer(disp); + rect_dsc.bg_opa = LV_OPA_TRANSP; + rect_dsc.radius = border_dsc->radius; + rect_dsc.border_color = border_dsc->color; + rect_dsc.border_opa = border_dsc->opa; + rect_dsc.border_side = border_dsc->side; + rect_dsc.border_width = border_dsc->width; + lv_draw_rect(&dest_layer, &rect_dsc, &task->area); + break; + } + case LV_DRAW_TASK_TYPE_LABEL: { + lv_draw_label_dsc_t label_dsc; + lv_draw_label_dsc_init(&label_dsc); + lv_memcpy(&label_dsc, task->draw_dsc, sizeof(label_dsc)); + label_dsc.base.user_data = lv_sdl_window_get_renderer(disp); + lv_draw_label(&dest_layer, &label_dsc, &task->area); + } + break; + case LV_DRAW_TASK_TYPE_IMAGE: { + lv_draw_image_dsc_t * image_dsc = task->draw_dsc; + // SDL_Surface* loadImage(std::string path) { + const char * path = image_dsc->src; + SDL_Surface * surface = IMG_Load(&path[2]); + if(surface == NULL) { + fprintf(stderr, "could not load image: %s\n", IMG_GetError()); + return NULL; + } + + lv_display_t * disp = _lv_refr_get_disp_refreshing(); + SDL_Renderer * renderer = lv_sdl_window_get_renderer(disp); + texture = SDL_CreateTextureFromSurface(renderer, surface); + break; + } + default: + return NULL; + break; + } + + while(dest_layer.draw_task_head) { + lv_draw_dispatch_layer(disp, &dest_layer); + if(dest_layer.draw_task_head) { + lv_draw_dispatch_wait_for_request(); + } + } + + SDL_Rect rect; + rect.x = dest_layer.buf_area.x1; + rect.y = dest_layer.buf_area.y1; + rect.w = lv_area_get_width(&dest_layer.buf_area); + rect.h = lv_area_get_height(&dest_layer.buf_area); + + if(texture == NULL) { + texture = SDL_CreateTexture(lv_sdl_window_get_renderer(disp), SDL_PIXELFORMAT_ARGB8888, + SDL_TEXTUREACCESS_STATIC, rect.w, rect.h); + SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND); + SDL_UpdateTexture(texture, NULL, sdl_render_buf, rect.w * 4); + } + else { + SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND); + } + + cache_data_t * data = lv_malloc(sizeof(cache_data_t)); + lv_draw_dsc_base_t * base_dsc = task->draw_dsc; + + data->draw_dsc = lv_malloc(base_dsc->dsc_size); + lv_memcpy((void *)data->draw_dsc, base_dsc, base_dsc->dsc_size); + data->w = lv_area_get_width(&task->area); + data->h = lv_area_get_height(&task->area); + data->texture = texture; + + lv_cache_entry_t * e = lv_cache_add(data, sizeof(cache_data_t), u->texture_cache_data_type, + lv_area_get_size(&task->area) * 4); + e->compare_cb = compare_cb; + e->invalidate_cb = invalidate_cb; + e->weight = lv_tick_elaps(tick); + e->weight += lv_area_get_size(&task->area) / 10000; + if(e->weight == 0) e->weight++; + return e; +} + +static void blend_texture_layer(lv_draw_sdl_unit_t * u) +{ + lv_display_t * disp = _lv_refr_get_disp_refreshing(); + SDL_Renderer * renderer = lv_sdl_window_get_renderer(disp); + + SDL_Rect clip_rect; + clip_rect.x = u->base_unit.clip_area->x1; + clip_rect.y = u->base_unit.clip_area->y1; + clip_rect.w = lv_area_get_width(u->base_unit.clip_area); + clip_rect.h = lv_area_get_height(u->base_unit.clip_area); + + lv_draw_task_t * t = u->task_act; + SDL_Rect rect; + rect.x = t->area.x1; + rect.y = t->area.y1; + rect.w = lv_area_get_width(&t->area); + rect.h = lv_area_get_height(&t->area); + + lv_draw_image_dsc_t * draw_dsc = t->draw_dsc; + lv_layer_t * src_layer = (lv_layer_t *)draw_dsc->src; + SDL_Texture * src_texture = layer_get_texture(src_layer); + + SDL_SetTextureAlphaMod(src_texture, draw_dsc->opa); + SDL_SetTextureBlendMode(src_texture, SDL_BLENDMODE_BLEND); + SDL_SetRenderTarget(renderer, layer_get_texture(u->base_unit.target_layer)); + SDL_RenderSetClipRect(renderer, &clip_rect); + SDL_RenderCopy(renderer, src_texture, NULL, &rect); + SDL_DestroyTexture(src_texture); + SDL_RenderSetClipRect(renderer, NULL); +} + +static void draw_from_cached_texture(lv_draw_sdl_unit_t * u) +{ + lv_draw_task_t * t = u->task_act; + + cache_data_t data_to_find; + data_to_find.draw_dsc = (lv_draw_dsc_base_t *)t->draw_dsc; + lv_draw_dsc_base_t * base_dsc = t->draw_dsc; + + data_to_find.w = lv_area_get_width(&t->area); + data_to_find.h = lv_area_get_height(&t->area); + data_to_find.texture = NULL; + + /*user_data stores the renderer to differentiate it from SW rendered tasks. + *However the cached texture is independent from the renderer so use NULL user_data*/ + void * user_data_saved = data_to_find.draw_dsc->user_data; + data_to_find.draw_dsc->user_data = NULL; + + lv_cache_lock(); + lv_cache_entry_t * e = lv_cache_find_by_data(&data_to_find, sizeof(data_to_find), u->texture_cache_data_type); + data_to_find.draw_dsc->user_data = user_data_saved; + if(e == NULL) { + printf("cache_miss %d\n", t->type); + e = draw_to_texture(u); + } + + if(e == NULL) { + lv_cache_unlock(); + return; + } + + const cache_data_t * data_cached = lv_cache_get_data(e); + SDL_Texture * texture = data_cached->texture; + lv_display_t * disp = _lv_refr_get_disp_refreshing(); + SDL_Renderer * renderer = lv_sdl_window_get_renderer(disp); + + lv_layer_t * dest_layer = u->base_unit.target_layer; + SDL_Rect clip_rect; + clip_rect.x = u->base_unit.clip_area->x1 - dest_layer->buf_area.x1; + clip_rect.y = u->base_unit.clip_area->y1 - dest_layer->buf_area.y1; + clip_rect.w = lv_area_get_width(u->base_unit.clip_area); + clip_rect.h = lv_area_get_height(u->base_unit.clip_area); + + SDL_Rect rect; + + SDL_SetRenderTarget(renderer, layer_get_texture(dest_layer)); + + if(t->type == LV_DRAW_TASK_TYPE_IMAGE) { + lv_draw_image_dsc_t * draw_dsc = t->draw_dsc; + lv_area_t image_area; + image_area.x1 = 0; + image_area.y1 = 0; + image_area.x2 = draw_dsc->header.w - 1; + image_area.y2 = draw_dsc->header.h - 1; + + lv_area_move(&image_area, t->area.x1 - dest_layer->buf_area.x1, t->area.y1 - dest_layer->buf_area.y1); + rect.x = image_area.x1; + rect.y = image_area.y1; + rect.w = lv_area_get_width(&image_area); + rect.h = lv_area_get_height(&image_area); + + SDL_RenderSetClipRect(renderer, &clip_rect); + SDL_RenderCopy(renderer, texture, NULL, &rect); + } + else { + rect.x = t->area.x1 - dest_layer->buf_area.x1; + rect.y = t->area.y1 - dest_layer->buf_area.y1; + rect.w = lv_area_get_width(&t->area); + rect.h = lv_area_get_height(&t->area); + + SDL_RenderSetClipRect(renderer, &clip_rect); + SDL_RenderCopy(renderer, texture, NULL, &rect); + } + + SDL_RenderSetClipRect(renderer, NULL); + + lv_cache_release(e); + lv_cache_unlock(); +} + +static void execute_drawing(lv_draw_sdl_unit_t * u) +{ + lv_draw_task_t * t = u->task_act; + + if(t->type == LV_DRAW_TASK_TYPE_BOX_SHADOW) return; + if(t->type == LV_DRAW_TASK_TYPE_LINE) return; + if(t->type == LV_DRAW_TASK_TYPE_TRIANGLE) return; + if(t->type == LV_DRAW_TASK_TYPE_BG_IMG) return; + + if(t->type == LV_DRAW_TASK_TYPE_LAYER) { + blend_texture_layer(u); + } + else { + draw_from_cached_texture(u); + } +} + +static SDL_Texture * layer_get_texture(lv_layer_t * layer) +{ + return layer->user_data; +} + +#endif /*LV_USE_DRAW_SDL*/ diff --git a/src/draw/sdl/lv_draw_sdl.h b/src/draw/sdl/lv_draw_sdl.h new file mode 100644 index 0000000000..b834e5d9c3 --- /dev/null +++ b/src/draw/sdl/lv_draw_sdl.h @@ -0,0 +1,89 @@ +/** + * @file lv_draw_sw.h + * + */ + +#ifndef LV_DRAW_SW_H +#define LV_DRAW_SW_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#include "../lv_draw.h" +#if LV_USE_DRAW_SDL + +#include "../../misc/lv_area.h" +#include "../../misc/lv_color.h" +#include "../../display/lv_display.h" +#include "../../osal/lv_os.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +typedef struct { + lv_draw_unit_t base_unit; + struct _lv_draw_task_t * task_act; + uint32_t texture_cache_data_type; +} lv_draw_sdl_unit_t; + +#if LV_DRAW_SW_SHADOW_CACHE_SIZE +typedef struct { + uint8_t cache[LV_DRAW_SW_SHADOW_CACHE_SIZE * LV_DRAW_SW_SHADOW_CACHE_SIZE]; + int32_t cache_size; + int32_t cache_r; +} lv_draw_sw_shadow_cache_t; +#endif + +/********************** + * GLOBAL PROTOTYPES + **********************/ + +void lv_draw_sdl_init(void); + +LV_ATTRIBUTE_FAST_MEM void lv_draw_sdl_image(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t * draw_dsc, + const lv_area_t * coords); + +void lv_draw_sdl_fill(lv_draw_unit_t * draw_unit, const lv_draw_fill_dsc_t * dsc, const lv_area_t * coords); + +void lv_draw_sdl_border(lv_draw_unit_t * draw_unit, const lv_draw_border_dsc_t * dsc, const lv_area_t * coords); + +void lv_draw_sdl_box_shadow(lv_draw_unit_t * draw_unit, const lv_draw_box_shadow_dsc_t * dsc, const lv_area_t * coords); + +void lv_draw_sdl_bg_image(lv_draw_unit_t * draw_unit, const lv_draw_bg_image_dsc_t * dsc, const lv_area_t * coords); + +void lv_draw_sdl_label(lv_draw_unit_t * draw_unit, const lv_draw_label_dsc_t * dsc, const lv_area_t * coords); + +void lv_draw_sdl_arc(lv_draw_unit_t * draw_unit, const lv_draw_arc_dsc_t * dsc, const lv_area_t * coords); + +LV_ATTRIBUTE_FAST_MEM void lv_draw_sdl_line(lv_draw_unit_t * draw_unit, const lv_draw_line_dsc_t * dsc); + +void lv_draw_sdl_layer(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t * draw_dsc, const lv_area_t * coords); + +void lv_draw_sdl_triangle(lv_draw_unit_t * draw_unit, const lv_draw_triangle_dsc_t * dsc); + +void lv_draw_sdl_mask_rect(lv_draw_unit_t * draw_unit, const lv_draw_mask_rect_dsc_t * dsc, const lv_area_t * coords); + +/*********************** + * GLOBAL VARIABLES + ***********************/ + +/********************** + * MACROS + **********************/ + +#endif /*LV_USE_DRAW_SDL*/ + +#ifdef __cplusplus +} /*extern "C"*/ +#endif + +#endif /*LV_DRAW_SDL_H*/ diff --git a/src/draw/sw/lv_draw_sw.c b/src/draw/sw/lv_draw_sw.c index dbbf8111d9..8381fe3401 100644 --- a/src/draw/sw/lv_draw_sw.c +++ b/src/draw/sw/lv_draw_sw.c @@ -40,7 +40,9 @@ static void execute_drawing(lv_draw_sw_unit_t * u); -static int32_t lv_draw_sw_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); +static int32_t dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); +static int32_t dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); +static int32_t evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * task); static int32_t lv_draw_sw_delete(lv_draw_unit_t * draw_unit); /********************** @@ -66,7 +68,8 @@ void lv_draw_sw_init(void) uint32_t i; for(i = 0; i < LV_DRAW_SW_DRAW_UNIT_CNT; i++) { lv_draw_sw_unit_t * draw_sw_unit = lv_draw_create_unit(sizeof(lv_draw_sw_unit_t)); - draw_sw_unit->base_unit.dispatch_cb = lv_draw_sw_dispatch; + draw_sw_unit->base_unit.dispatch_cb = dispatch; + draw_sw_unit->base_unit.evaluate_cb = evaluate; draw_sw_unit->idx = i; draw_sw_unit->base_unit.delete_cb = LV_USE_OS ? lv_draw_sw_delete : NULL; @@ -114,7 +117,18 @@ static int32_t lv_draw_sw_delete(lv_draw_unit_t * draw_unit) * STATIC FUNCTIONS **********************/ -static int32_t lv_draw_sw_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) +static int32_t evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * task) +{ + LV_UNUSED(draw_unit); + + if(task->preference_score >= 100) { + task->preference_score = 100; + task->preferred_draw_unit_id = DRAW_UNIT_ID_SW; + } + return 0; +} + +static int32_t dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer) { lv_draw_sw_unit_t * draw_sw_unit = (lv_draw_sw_unit_t *) draw_unit; diff --git a/src/libs/barcode/lv_barcode.c b/src/libs/barcode/lv_barcode.c index e3f3d11c7b..4f04afbe47 100644 --- a/src/libs/barcode/lv_barcode.c +++ b/src/libs/barcode/lv_barcode.c @@ -197,7 +197,7 @@ static void lv_barcode_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj lv_image_dsc_t * img = lv_canvas_get_image(obj); lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(img, LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(img, LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); if(!img->data) { @@ -205,9 +205,9 @@ static void lv_barcode_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj return; } - LV_LOG_INFO("free canvas buffer: %p", img->data); + LV_LOG_INFO("free canvas buffer: %p", lv_canvas_get_buf(obj)); - lv_draw_buf_free((void *)img->data); + lv_draw_buf_free((void *)lv_canvas_get_buf(obj)); img->data = NULL; } @@ -216,12 +216,13 @@ static bool lv_barcode_change_buf_size(lv_obj_t * obj, int32_t w, int32_t h) LV_ASSERT_NULL(obj); LV_ASSERT(w > 0); - lv_image_dsc_t * img = lv_canvas_get_image(obj); - void * buf = (void *)img->data; + void * buf = (void *)lv_canvas_get_buf(obj); + lv_draw_buf_free((void *)buf); uint32_t stride = lv_draw_buf_width_to_stride(w, LV_COLOR_FORMAT_I1); uint32_t buf_size = stride * h; - buf = lv_draw_buf_malloc(buf_size, LV_COLOR_FORMAT_I1); + /*+8 for the 2x4 byte pallette*/ + buf = lv_draw_buf_malloc(buf_size + 8, LV_COLOR_FORMAT_I1); LV_ASSERT_MALLOC(buf); if(!buf) { @@ -229,7 +230,6 @@ static bool lv_barcode_change_buf_size(lv_obj_t * obj, int32_t w, int32_t h) return false; } - lv_draw_buf_free((void *)img->data); lv_canvas_set_buffer(obj, buf, w, h, LV_COLOR_FORMAT_I1); LV_LOG_INFO("set canvas buffer: %p, width = %d", buf, (int)w); return true; diff --git a/src/libs/gif/lv_gif.c b/src/libs/gif/lv_gif.c index 5d2b329737..b21b5909b0 100644 --- a/src/libs/gif/lv_gif.c +++ b/src/libs/gif/lv_gif.c @@ -63,7 +63,7 @@ void lv_gif_set_src(lv_obj_t * obj, const void * src) /*Close previous gif if any*/ if(gifobj->gif) { lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); gd_close_gif(gifobj->gif); @@ -127,7 +127,7 @@ static void lv_gif_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_gif_t * gifobj = (lv_gif_t *) obj; lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); if(gifobj->gif) @@ -155,7 +155,7 @@ static void next_frame_task_cb(lv_timer_t * t) gd_render_frame(gifobj->gif, (uint8_t *)gifobj->imgdsc.data); lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(lv_image_get_src(obj), LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); lv_obj_invalidate(obj); } diff --git a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c index df5d2ba247..0d2b0fe2d4 100644 --- a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c +++ b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c @@ -39,6 +39,7 @@ static const void * decode_jpeg_file(const char * filename); static bool get_jpeg_size(const char * filename, uint32_t * width, uint32_t * height); static void error_exit(j_common_ptr cinfo); static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc); +static void cache_invalidate_cb(lv_cache_entry_t * entry); /********************** * STATIC VARIABLES @@ -61,6 +62,7 @@ void lv_libjpeg_turbo_init(void) lv_image_decoder_set_info_cb(dec, decoder_info); lv_image_decoder_set_open_cb(dec, decoder_open); lv_image_decoder_set_close_cb(dec, decoder_close); + dec->cache_data_type = lv_cache_register_data_type(); } void lv_libjpeg_turbo_deinit(void) @@ -155,26 +157,26 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d if(dsc->src_type == LV_IMAGE_SRC_FILE) { const char * fn = dsc->src; + uint32_t t = lv_tick_get(); + const void * decoded_img = decode_jpeg_file(fn); + t = lv_tick_elaps(t); + lv_cache_lock(); - lv_cache_entry_t * cache = lv_cache_add(dsc->header.w * dsc->header.h * JPEG_PIXEL_SIZE); + lv_cache_entry_t * cache = lv_cache_add(decoded_img, 0, dsc->header.w * dsc->header.h * JPEG_PIXEL_SIZE, + decoder->cache_data_type); if(cache == NULL) { lv_cache_unlock(); return LV_RESULT_INVALID; } - uint32_t t = lv_tick_get(); - const void * decoded_img = decode_jpeg_file(fn); - t = lv_tick_elaps(t); cache->weight = t; - cache->data = decoded_img; - cache->free_data = 1; + cache->invalidate_cb = cache_invalidate_cb; if(dsc->src_type == LV_IMAGE_SRC_FILE) { cache->src = lv_strdup(dsc->src); - cache->src_type = LV_CACHE_SRC_TYPE_STR; - cache->free_src = 1; + cache->src_type = LV_CACHE_SRC_TYPE_PATH; } else { - cache->src_type = LV_CACHE_SRC_TYPE_PTR; + cache->src_type = LV_CACHE_SRC_TYPE_POINTER; cache->src = dsc->src; } @@ -205,7 +207,7 @@ static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc) if(dsc->src_type == LV_IMAGE_SRC_FILE) { const char * fn = dsc->src; - lv_cache_entry_t * cache = lv_cache_find(fn, LV_CACHE_SRC_TYPE_STR, 0, 0); + lv_cache_entry_t * cache = lv_cache_find_by_src(NULL, fn, LV_CACHE_SRC_TYPE_PATH); if(cache) { dsc->img_data = lv_cache_get_data(cache); dsc->cache_entry = cache; /*Save the cache to release it in decoder_close*/ @@ -473,4 +475,12 @@ static void error_exit(j_common_ptr cinfo) longjmp(myerr->jb, 1); } + +static void cache_invalidate_cb(lv_cache_entry_t * entry) +{ + if(entry->src_type == LV_CACHE_SRC_TYPE_PATH) lv_free((void *)entry->src); + lv_free((void *)entry->data); +} + + #endif /*LV_USE_LIBJPEG_TURBO*/ diff --git a/src/libs/libpng/lv_libpng.c b/src/libs/libpng/lv_libpng.c index ca0ab2927d..59be1f007d 100644 --- a/src/libs/libpng/lv_libpng.c +++ b/src/libs/libpng/lv_libpng.c @@ -28,6 +28,7 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc); static const void * decode_png_file(const char * filename); static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc); +static void cache_invalidate_cb(lv_cache_entry_t * entry); /********************** * STATIC VARIABLES @@ -50,6 +51,7 @@ void lv_libpng_init(void) lv_image_decoder_set_info_cb(dec, decoder_info); lv_image_decoder_set_open_cb(dec, decoder_open); lv_image_decoder_set_close_cb(dec, decoder_close); + dec->cache_data_type = lv_cache_register_data_type(); } void lv_libpng_deinit(void) @@ -129,26 +131,26 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d /*If it's a PNG file...*/ if(dsc->src_type == LV_IMAGE_SRC_FILE) { const char * fn = dsc->src; + uint32_t t = lv_tick_get(); + const void * decoded_img = decode_png_file(fn); + t = lv_tick_elaps(t); + lv_cache_lock(); - lv_cache_entry_t * cache = lv_cache_add(dsc->header.w * dsc->header.h * sizeof(uint32_t)); + lv_cache_entry_t * cache = lv_cache_add(decoded_img, 0, decoder->cache_data_type, + dsc->header.w * dsc->header.h * sizeof(uint32_t)); if(cache == NULL) { lv_cache_unlock(); return LV_RESULT_INVALID; } - uint32_t t = lv_tick_get(); - const void * decoded_img = decode_png_file(fn); - t = lv_tick_elaps(t); cache->weight = t; - cache->data = decoded_img; - cache->free_data = 1; + cache->invalidate_cb = cache_invalidate_cb; if(dsc->src_type == LV_IMAGE_SRC_FILE) { cache->src = lv_strdup(dsc->src); - cache->src_type = LV_CACHE_SRC_TYPE_STR; - cache->free_src = 1; + cache->src_type = LV_CACHE_SRC_TYPE_PATH; } else { - cache->src_type = LV_CACHE_SRC_TYPE_PTR; + cache->src_type = LV_CACHE_SRC_TYPE_POINTER; cache->src = dsc->src; } @@ -180,7 +182,7 @@ static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc) if(dsc->src_type == LV_IMAGE_SRC_FILE) { const char * fn = dsc->src; - lv_cache_entry_t * cache = lv_cache_find(fn, LV_CACHE_SRC_TYPE_STR, 0, 0); + lv_cache_entry_t * cache = lv_cache_find_by_src(NULL, fn, LV_CACHE_SRC_TYPE_PATH); if(cache) { dsc->img_data = lv_cache_get_data(cache); dsc->cache_entry = cache; /*Save the cache to release it in decoder_close*/ @@ -299,4 +301,11 @@ static const void * decode_png_file(const char * filename) return image_data; } + +static void cache_invalidate_cb(lv_cache_entry_t * entry) +{ + lv_free((void *)entry->src); + lv_free((void *)entry->data); +} + #endif /*LV_USE_LIBPNG*/ diff --git a/src/libs/lodepng/lv_lodepng.c b/src/libs/lodepng/lv_lodepng.c index 9400b177fd..db753ba063 100644 --- a/src/libs/lodepng/lv_lodepng.c +++ b/src/libs/lodepng/lv_lodepng.c @@ -20,6 +20,9 @@ /********************** * TYPEDEFS **********************/ +typedef struct { + +} cache_data_t; /********************** * STATIC PROTOTYPES @@ -30,6 +33,7 @@ static void decoder_close(lv_image_decoder_t * dec, lv_image_decoder_dsc_t * dsc static void convert_color_depth(uint8_t * img_p, uint32_t px_cnt); static const void * decode_png_data(const void * png_data, size_t png_data_size); static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc); +static void cache_invalidate_cb(lv_cache_entry_t * entry); /********************** * STATIC VARIABLES @@ -52,6 +56,7 @@ void lv_lodepng_init(void) lv_image_decoder_set_info_cb(dec, decoder_info); lv_image_decoder_set_open_cb(dec, decoder_open); lv_image_decoder_set_close_cb(dec, decoder_close); + dec->cache_data_type = lv_cache_register_data_type(); } void lv_lodepng_deinit(void) @@ -182,7 +187,7 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d } lv_cache_lock(); - lv_cache_entry_t * cache = lv_cache_add(dsc->header.w * dsc->header.h * 4); + lv_cache_entry_t * cache = lv_cache_add(NULL, 0, decoder->cache_data_type, dsc->header.w * dsc->header.h * 4); if(cache == NULL) { lv_cache_unlock(); return LV_RESULT_INVALID; @@ -193,15 +198,14 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d t = lv_tick_elaps(t); cache->weight = t; cache->data = decoded_img; - cache->free_data = 1; + cache->invalidate_cb = cache_invalidate_cb; if(dsc->src_type == LV_IMAGE_SRC_FILE) { cache->src = lv_strdup(dsc->src); - cache->src_type = LV_CACHE_SRC_TYPE_STR; - cache->free_src = 1; + cache->src_type = LV_CACHE_SRC_TYPE_PATH; lv_free((void *)png_data); } else { - cache->src_type = LV_CACHE_SRC_TYPE_PTR; + cache->src_type = LV_CACHE_SRC_TYPE_POINTER; cache->src = dsc->src; } @@ -233,7 +237,7 @@ static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc) if(dsc->src_type == LV_IMAGE_SRC_FILE) { const char * fn = dsc->src; - lv_cache_entry_t * cache = lv_cache_find(fn, LV_CACHE_SRC_TYPE_STR, 0, 0); + lv_cache_entry_t * cache = lv_cache_find_by_src(NULL, fn, LV_CACHE_SRC_TYPE_PATH); if(cache) { dsc->img_data = lv_cache_get_data(cache); dsc->cache_entry = cache; /*Save the cache to release it in decoder_close*/ @@ -245,7 +249,7 @@ static lv_result_t try_cache(lv_image_decoder_dsc_t * dsc) else if(dsc->src_type == LV_IMAGE_SRC_VARIABLE) { const lv_image_dsc_t * img_dsc = dsc->src; - lv_cache_entry_t * cache = lv_cache_find(img_dsc, LV_CACHE_SRC_TYPE_PTR, 0, 0); + lv_cache_entry_t * cache = lv_cache_find_by_src(NULL, img_dsc, LV_CACHE_SRC_TYPE_POINTER); if(cache) { dsc->img_data = lv_cache_get_data(cache); dsc->cache_entry = cache; /*Save the cache to release it in decoder_close*/ @@ -294,4 +298,10 @@ static void convert_color_depth(uint8_t * img_p, uint32_t px_cnt) } } +static void cache_invalidate_cb(lv_cache_entry_t * entry) +{ + if(entry->src_type == LV_CACHE_SRC_TYPE_PATH) lv_free((void *)entry->src); + lv_free((void *)entry->data); +} + #endif /*LV_USE_LODEPNG*/ diff --git a/src/libs/qrcode/lv_qrcode.c b/src/libs/qrcode/lv_qrcode.c index ebea012baa..6db4c9df2e 100644 --- a/src/libs/qrcode/lv_qrcode.c +++ b/src/libs/qrcode/lv_qrcode.c @@ -66,7 +66,7 @@ void lv_qrcode_set_size(lv_obj_t * obj, int32_t size) lv_image_dsc_t * img_dsc = lv_canvas_get_image(obj); void * buf = (void *)img_dsc->data; - uint32_t buf_size = LV_CANVAS_BUF_SIZE_INDEXED_1BIT(size, size); + uint32_t buf_size = LV_CANVAS_BUF_SIZE(size, size, 1, LV_DRAW_BUF_STRIDE_ALIGN); buf = lv_realloc(buf, buf_size); LV_ASSERT_MALLOC(buf); if(buf == NULL) { @@ -226,14 +226,14 @@ static void lv_qrcode_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_image_dsc_t * img_dsc = lv_canvas_get_image(obj); lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(img_dsc, LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(img_dsc, LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); if(!img_dsc->data) { return; } - lv_free((void *)img_dsc->data); + lv_free((void *)lv_canvas_get_image(obj)); img_dsc->data = NULL; } diff --git a/src/libs/tiny_ttf/lv_tiny_ttf.c b/src/libs/tiny_ttf/lv_tiny_ttf.c index 750375c597..2592038dc7 100644 --- a/src/libs/tiny_ttf/lv_tiny_ttf.c +++ b/src/libs/tiny_ttf/lv_tiny_ttf.c @@ -121,6 +121,12 @@ static bool ttf_get_glyph_dsc_cb(const lv_font_t * font, lv_font_glyph_dsc_t * d return true; /*true: glyph found; false: glyph was not found*/ } +static void cache_invalidate_cb(lv_cache_entry_t * entry) +{ + lv_draw_buf_free((void *)entry->data); +} + + static const uint8_t * ttf_get_glyph_bitmap_cb(const lv_font_t * font, uint32_t unicode_letter, uint8_t * bitmap_buf) { LV_UNUSED(bitmap_buf); @@ -139,37 +145,50 @@ static const uint8_t * ttf_get_glyph_bitmap_cb(const lv_font_t * font, uint32_t uint32_t stride = lv_draw_buf_width_to_stride(w, LV_COLOR_FORMAT_A8); lv_cache_lock(); uint32_t cp = unicode_letter; - lv_cache_entry_t * cache = lv_cache_find(font, LV_CACHE_SRC_TYPE_PTR, font->line_height, cp); + lv_cache_entry_t * cache = lv_cache_find_by_src(NULL, font, LV_CACHE_SRC_TYPE_POINTER); + while(cache) { + if(cache->param1 == (int32_t)font->line_height && cache->param2 == (int32_t)cp) break; + cache = lv_cache_find_by_src(cache, font, LV_CACHE_SRC_TYPE_POINTER); + } if(cache) { uint8_t * buffer = (uint8_t *)lv_cache_get_data(cache); + lv_cache_release(cache); lv_cache_unlock(); return buffer; } + size_t szb = h * stride; - lv_cache_entry_t * entry = lv_cache_add(szb); + + uint8_t * buffer = lv_draw_buf_malloc(szb, LV_COLOR_FORMAT_A8); + if(NULL == buffer) { + LV_LOG_ERROR("tiny_ttf: out of memory\n"); + lv_cache_unlock(); + return NULL; + } + + lv_cache_entry_t * entry = lv_cache_add(buffer, 0, LV_CACHE_DATA_TYPE_NOT_SET, szb); if(entry == NULL) { lv_cache_unlock(); + lv_draw_buf_free(buffer); LV_LOG_ERROR("tiny_ttf: cache not allocated\n"); return NULL; } /* This smells. We add the codepoint to the base pointer to get a key. */ entry->src = font; - entry->src_type = LV_CACHE_SRC_TYPE_PTR; + entry->src_type = LV_CACHE_SRC_TYPE_POINTER; entry->param1 = font->line_height; entry->param2 = cp; - uint8_t * buffer = lv_draw_buf_malloc(szb, LV_COLOR_FORMAT_A8); - if(NULL == buffer) { - LV_LOG_ERROR("tiny_ttf: out of memory\n"); - lv_cache_invalidate(entry); - lv_cache_unlock(); - return NULL; - } - entry->data = buffer; - entry->free_data = 1; + entry->invalidate_cb = cache_invalidate_cb; + + /*Just to increment life*/ + lv_cache_get_data(entry); + memset(buffer, 0, szb); - stbtt_MakeGlyphBitmap(info, buffer, w, h, stride, dsc->scale, dsc->scale, g1); + stbtt_MakeGlyphBitmap(info, bitmap_buf, w, h, stride, dsc->scale, dsc->scale, g1); + lv_memcpy(buffer, bitmap_buf, stride * h); + lv_cache_release(entry); lv_cache_unlock(); - return buffer; /*Or NULL if not found*/ + return bitmap_buf; /*Or NULL if not found*/ } static lv_result_t lv_tiny_ttf_create(lv_font_t * out_font, const char * path, const void * data, size_t data_size, @@ -268,4 +287,6 @@ void lv_tiny_ttf_destroy(lv_font_t * font) } } } + + #endif diff --git a/src/libs/tiny_ttf/lv_tiny_ttf.h b/src/libs/tiny_ttf/lv_tiny_ttf.h index 23d9ea743b..d9ee80d5ca 100644 --- a/src/libs/tiny_ttf/lv_tiny_ttf.h +++ b/src/libs/tiny_ttf/lv_tiny_ttf.h @@ -28,6 +28,7 @@ extern "C" { /********************** * GLOBAL PROTOTYPES **********************/ + #if LV_TINY_TTF_FILE_SUPPORT !=0 /* create a font from the specified file or path with the specified line height.*/ lv_result_t lv_tiny_ttf_create_file(lv_font_t * font, const char * path, int32_t font_size); diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index 7b735ec589..fa74c01339 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -325,6 +325,15 @@ #endif #endif +/* Draw using cached SDL textures*/ +#ifndef LV_USE_DRAW_SDL + #ifdef CONFIG_LV_USE_DRAW_SDL + #define LV_USE_DRAW_SDL CONFIG_LV_USE_DRAW_SDL + #else + #define LV_USE_DRAW_SDL 0 + #endif +#endif + /*================= * OPERATING SYSTEM *=================*/ diff --git a/src/lv_init.c b/src/lv_init.c index 9c8b7726bb..1e458c826b 100644 --- a/src/lv_init.c +++ b/src/lv_init.c @@ -164,6 +164,10 @@ void lv_init(void) lv_draw_pxp_init(); #endif +#if LV_USE_DRAW_SDL + lv_draw_sdl_init(); +#endif + _lv_obj_style_init(); /*Initialize the screen refresh system*/ diff --git a/src/misc/lv_cache.c b/src/misc/lv_cache.c index 203944ca89..1ebf1e918a 100644 --- a/src/misc/lv_cache.c +++ b/src/misc/lv_cache.c @@ -56,7 +56,7 @@ void lv_cache_set_manager(lv_cache_manager_t * manager) else if(_cache_manager.set_max_size_cb != NULL) _cache_manager.set_max_size_cb(0); _cache_manager.add_cb = manager->add_cb; - _cache_manager.find_cb = manager->find_cb; + _cache_manager.find_by_data_cb = manager->find_by_data_cb; _cache_manager.invalidate_cb = manager->invalidate_cb; _cache_manager.get_data_cb = manager->get_data_cb; _cache_manager.release_cb = manager->release_cb; @@ -66,20 +66,28 @@ void lv_cache_set_manager(lv_cache_manager_t * manager) if(_cache_manager.set_max_size_cb != NULL) _cache_manager.set_max_size_cb(_cache_manager.max_size); } -lv_cache_entry_t * lv_cache_add(size_t size) +lv_cache_entry_t * lv_cache_add(const void * data, size_t data_size, uint32_t data_type, size_t memory_usage) { LV_ASSERT(_cache_manager.locked); if(_cache_manager.add_cb == NULL) return NULL; - return _cache_manager.add_cb(size); + return _cache_manager.add_cb(data, data_size, data_type, memory_usage); } -lv_cache_entry_t * lv_cache_find(const void * src_ptr, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2) +lv_cache_entry_t * lv_cache_find_by_data(const void * data, size_t data_size, uint32_t data_type) { LV_ASSERT(_cache_manager.locked); - if(_cache_manager.find_cb == NULL) return NULL; + if(_cache_manager.find_by_data_cb == NULL) return NULL; - return _cache_manager.find_cb(src_ptr, src_type, param1, param2); + return _cache_manager.find_by_data_cb(data, data_size, data_type); +} + +lv_cache_entry_t * lv_cache_find_by_src(lv_cache_entry_t * entry, const void * src, lv_cache_src_type_t src_type) +{ + LV_ASSERT(_cache_manager.locked); + if(_cache_manager.find_by_src_cb == NULL) return NULL; + + return _cache_manager.find_by_src_cb(entry, src, src_type); } void lv_cache_invalidate(lv_cache_entry_t * entry) @@ -90,6 +98,16 @@ void lv_cache_invalidate(lv_cache_entry_t * entry) _cache_manager.invalidate_cb(entry); } +void lv_cache_invalidate_by_src(const void * src, lv_cache_src_type_t src_type) +{ + LV_ASSERT(_cache_manager.locked); + lv_cache_entry_t * entry = lv_cache_find_by_src(NULL, src, src_type); + while(entry) { + lv_cache_invalidate(entry); + entry = lv_cache_find_by_src(entry, src, src_type); + } +} + const void * lv_cache_get_data(lv_cache_entry_t * entry) { LV_ASSERT(_cache_manager.locked); @@ -133,6 +151,12 @@ void lv_cache_unlock(void) lv_mutex_unlock(&_cache_manager.mutex); } +uint32_t lv_cache_register_data_type(void) +{ + _cache_manager.last_data_type++; + return _cache_manager.last_data_type; +} + /********************** * STATIC FUNCTIONS **********************/ diff --git a/src/misc/lv_cache.h b/src/misc/lv_cache.h index 5a60ea9001..f22bc6875b 100644 --- a/src/misc/lv_cache.h +++ b/src/misc/lv_cache.h @@ -15,41 +15,77 @@ extern "C" { *********************/ #include #include +#include #include "../osal/lv_os.h" /********************* * DEFINES *********************/ +#define LV_CACHE_DATA_TYPE_NOT_SET 0xFFFFFFFF /********************** * TYPEDEFS **********************/ typedef enum { - LV_CACHE_SRC_TYPE_PTR, - LV_CACHE_SRC_TYPE_STR, - _LV_CACHE_SRC_TYPE_LAST, + LV_CACHE_SRC_TYPE_PATH, + LV_CACHE_SRC_TYPE_POINTER, } lv_cache_src_type_t; typedef struct _lv_cache_entry_t { - /**The image source or other source related to the cache content.*/ + + /** + * The data to cache. + * Can be just a pointer to a byte array, or pointer to a complex structure, or anything else*/ + const void * data; + + /** + * Size of data in bytes. + * It's not the size of the cached data, just the size of the structure pointed by `data` + * E.g. `data` can point to descriptor struct and the size of that struct needs to be stored here. + * It can be used in the `compary_cb` to compare `data` fields of the entries with a requested one*/ + uint32_t data_size; + + /**An integer ID to tell the type of the cached data. + * If set to `LV_CACHE_DATA_TYPE_NOT_SET` `lv_cache_find_by_data` cannot be used*/ + uint32_t data_type; + + /** + * The source from which the cache is created. + * It's can or cannot be the same as data, or different, or NULL. + * It's used to find the cache entries which are relted to same source. + * E.g. the same image, font, etc. */ const void * src; lv_cache_src_type_t src_type; - /** Some extra parameters to describe the source. E.g. the current frame of an animation*/ - uint32_t param1; - uint32_t param2; + /**Arbitrary parameters to better identify the source*/ + int32_t param1; + int32_t param2; + + /** Memory in bytes used by data. */ + uint32_t memory_usage; + + /** + * Called to compare the data of cache entries. + * Before calling this function LVGL checks that `data_size` of both entries are the same. + * This callback look into `data` and check all the pointers and their content on any level. + * @param data1 first data to compare + * @param data2 second data to compare + * @param data_size size of data + * @return true: `data1` and `data2` are the same + */ + bool (*compare_cb)(const void * data1, const void * data2, size_t data_size); + + /** + * Called when the entry is invalidated to free its data + * @param e the cache entry to free + */ + void (*invalidate_cb)(struct _lv_cache_entry_t * e); /** User processing tag*/ uint32_t process_state; - /** The data to cache*/ - const void * data; - - /** Size of data in bytes*/ - uint32_t data_size; - /** On access to any cache entry, `life` of each cache entry will be incremented by their own `weight` to keep the entry alive longer*/ uint32_t weight; @@ -61,12 +97,6 @@ typedef struct _lv_cache_entry_t { * A data will dropped from the cache only if its usage_count is zero */ uint32_t usage_count; - /** Call `lv_free` on `src` when the entry is removed from the cache */ - uint32_t free_src : 1; - - /** Call `lv_draw_buf_free` on `data` when the entry is removed from the cache */ - uint32_t free_data : 1; - /** The cache entry was larger then the max cache size so only a temporary entry was allocated * The entry will be closed and freed in `lv_cache_release` automatically*/ uint32_t temporary : 1; @@ -79,21 +109,33 @@ typedef struct _lv_cache_entry_t { * Add a new entry to the cache with the given size. * It won't allocate any buffers just free enough space to be a new entry * with `size` bytes fits. - * @param size the size of the new entry in bytes - * @return a handler for the new cache entry + * @param data data the cache, can be a complex structure too + * @param data_size the size of data (if it's a struct then the size of the struct) + * @param data_type type of data to identify the kind of this cache entry + * @param memory_usage the size of memory used by this entry (`data` might contain pointers so it's size of all buffers related to entry) + * @return a handler for the new cache entry */ -typedef lv_cache_entry_t * (*lv_cache_add_cb)(size_t size); +typedef lv_cache_entry_t * (*lv_cache_add_cb)(const void * data, size_t data_size, uint32_t data_type, + size_t memory_usage); /** - * Find a cache entry - * @param src_ptr pointer to the source data - * @param src_type source type (`LV_CACHE_SRC_TYPE_PTR` or `LV_CACHE_SRC_TYPE_STR`) - * @param param1 param1, which was set when the cache was added - * @param param2 param2, which was set when the cache was added - * @return the cache entry with given source and parameters or NULL if not found + * Find a cache entry based on its data + * @param data the data to find + * @param data_size size of data + * @param data_type ID for the data type + * @return the cache entry with given `data` or NULL if not found */ -typedef lv_cache_entry_t * (*lv_cache_find_cb)(const void * src_ptr, lv_cache_src_type_t src_type, uint32_t param1, - uint32_t param2); +typedef lv_cache_entry_t * (*lv_cache_find_by_data_cb)(const void * data, size_t data_size, uint32_t data_type); + +/** + * Get the next entry which has the given source and parameters + * @param prev_entry pointer to the previous entry from which the nest should be found. NULL means to start from the beginning. + * @param src a pointer or a string + * @param src_type element of lv_cache_src_type_t + * @return the cache entry with given source or NULL if not found + */ +typedef lv_cache_entry_t * (*lv_cache_find_by_src_cb)(lv_cache_entry_t * entry, const void * src, + lv_cache_src_type_t src_type); /** * Invalidate (drop) a cache entry @@ -130,7 +172,8 @@ typedef void (*lv_cache_empty_cb)(void); typedef struct { lv_cache_add_cb add_cb; - lv_cache_find_cb find_cb; + lv_cache_find_by_data_cb find_by_data_cb; + lv_cache_find_by_src_cb find_by_src_cb; lv_cache_invalidate_cb invalidate_cb; lv_cache_get_data_cb get_data_cb; lv_cache_release_cb release_cb; @@ -140,6 +183,7 @@ typedef struct { lv_mutex_t mutex; size_t max_size; uint32_t locked : 1; /**< Show the mutex state, used to log unlocked cache access*/ + uint32_t last_data_type; } lv_cache_manager_t; /********************** @@ -166,27 +210,45 @@ void lv_cache_set_manager(lv_cache_manager_t * manager); * Add a new entry to the cache with the given size. * It won't allocate any buffers just free enough space to be a new entry * with `size` bytes fits. - * @param size the size of the new entry in bytes - * @return a handler for the new cache entry + * @param data data the cache, can be a complex structure too + * @param data_size the size of data (if it's a struct then the size of the struct) + * @param data_type type of data to identify the kind of this cache entry + * @param memory_usage the size of memory used by this entry (`data` might contain pointers so it's size of all buffers related to entry) + * @return a handler for the new cache entry */ -lv_cache_entry_t * lv_cache_add(size_t size); +lv_cache_entry_t * lv_cache_add(const void * data, size_t data_size, uint32_t data_type, size_t memory_usage); /** - * Find a cache entry with pointer source type - * @param src_ptr pointer to the source data - * @param src_type source type (`LV_CACHE_SRC_TYPE_PTR` or `LV_CACHE_SRC_TYPE_STR`) - * @param param1 param1, which was set when the cache was added - * @param param2 param2, which was set when the cache was added - * @return the cache entry with given source and parameters or NULL if not found + * Find a cache entry based on its data + * @param data the data to find + * @param data_size size of data + * @param data_type ID of data type + * @return the cache entry with given `data` or NULL if not found */ -lv_cache_entry_t * lv_cache_find(const void * src, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2); +lv_cache_entry_t * lv_cache_find_by_data(const void * data, size_t data_size, uint32_t data_type); /** - * Invalidate (drop) a cache entry + * Get the next entry which has the given source and parameters + * @param prev_entry pointer to the previous entry from which the nest should be found. NULL means to start from the beginning. + * @param src a pointer or a string + * @param src_type element of lv_cache_src_type_t + * @return the cache entry with given source or NULL if not found + */ +lv_cache_entry_t * lv_cache_find_by_src(lv_cache_entry_t * entry, const void * src, lv_cache_src_type_t src_type); + +/** + * Invalidate (drop) a cache entry. It will call the entry's `invalidate_cb` to free the resources * @param entry the entry to invalidate. (can be retrieved by `lv_cache_find()`) */ void lv_cache_invalidate(lv_cache_entry_t * entry); +/** + * Invalidate all cache entries with a given source + * @param src a pointer or a string + * @param src_type element of lv_cache_src_type_t + */ +void lv_cache_invalidate_by_src(const void * src, lv_cache_src_type_t src_type); + /** * Get the data of a cache entry. * It is considered a cached data access so the cache manager can count that @@ -227,6 +289,12 @@ void lv_cache_lock(void); */ void lv_cache_unlock(void); +/** + * Register a data type which can be used as `entry->data_type`. + * @return the registered unique data type ID. + */ +uint32_t lv_cache_register_data_type(void); + /********************** * MACROS **********************/ diff --git a/src/misc/lv_cache_builtin.c b/src/misc/lv_cache_builtin.c index 223da5b35d..8b98eb3b60 100644 --- a/src/misc/lv_cache_builtin.c +++ b/src/misc/lv_cache_builtin.c @@ -25,8 +25,9 @@ /********************** * STATIC PROTOTYPES **********************/ -static lv_cache_entry_t * add_cb(size_t size); -static lv_cache_entry_t * find_cb(const void * src, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2); +static lv_cache_entry_t * add_cb(const void * data, size_t data_size, uint32_t data_type, size_t memory_usage); +static lv_cache_entry_t * find_by_data_cb(const void * data, size_t data_size, uint32_t data_type); +static lv_cache_entry_t * find_by_src_cb(lv_cache_entry_t * entry, const void * src, lv_cache_src_type_t src_type); static void invalidate_cb(lv_cache_entry_t * entry); static const void * get_data_cb(lv_cache_entry_t * entry); static void release_cb(lv_cache_entry_t * entry); @@ -57,7 +58,8 @@ void _lv_cache_builtin_init(void) _lv_ll_init(&dsc.entry_ll, sizeof(lv_cache_entry_t)); _cache_manager.add_cb = add_cb; - _cache_manager.find_cb = find_cb; + _cache_manager.find_by_data_cb = find_by_data_cb; + _cache_manager.find_by_src_cb = find_by_src_cb; _cache_manager.invalidate_cb = invalidate_cb; _cache_manager.get_data_cb = get_data_cb; _cache_manager.release_cb = release_cb; @@ -74,15 +76,15 @@ void _lv_cache_builtin_deinit(void) * STATIC FUNCTIONS **********************/ -static lv_cache_entry_t * add_cb(size_t size) +static lv_cache_entry_t * add_cb(const void * data, size_t data_size, uint32_t data_type, size_t memory_usage) { size_t max_size = lv_cache_get_max_size(); /*Can't cache data larger than max size*/ - bool temporary = size > max_size ? true : false; + bool temporary = memory_usage > max_size ? true : false; if(!temporary) { /*Keep dropping items until there is enough space*/ - while(dsc.cur_size + size > _cache_manager.max_size) { + while(dsc.cur_size + memory_usage > _cache_manager.max_size) { bool ret = drop_youngest(); /*No item could be dropped. @@ -96,29 +98,32 @@ static lv_cache_entry_t * add_cb(size_t size) lv_cache_entry_t * entry = _lv_ll_ins_head(&dsc.entry_ll); lv_memzero(entry, sizeof(lv_cache_entry_t)); - entry->data_size = size; + entry->memory_usage = memory_usage; entry->weight = 1; entry->temporary = temporary; + entry->data = data; + entry->data_size = data_size; + entry->data_type = data_type; if(temporary) { - LV_TRACE_CACHE("Add temporary cache: %lu bytes", (unsigned long)size); + LV_TRACE_CACHE("Add temporary cache: %lu bytes", (unsigned long)memory_usage); } else { - LV_TRACE_CACHE("Add cache: %lu bytes", (unsigned long)size); - dsc.cur_size += size; + LV_TRACE_CACHE("Add cache: %lu bytes", (unsigned long)memory_usage); + dsc.cur_size += memory_usage; } return entry; } -static lv_cache_entry_t * find_cb(const void * src, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2) +static lv_cache_entry_t * find_by_data_cb(const void * data, size_t data_size, uint32_t data_type) { lv_cache_entry_t * entry = _lv_ll_get_head(&dsc.entry_ll); while(entry) { - if(param1 == entry->param1 && param2 == entry->param2 && src_type == entry->src_type && - ((src_type == LV_CACHE_SRC_TYPE_PTR && src == entry->src) || - (src_type == LV_CACHE_SRC_TYPE_STR && strcmp(src, entry->src) == 0))) { - return entry; + if(entry->data_type == data_type && entry->data_size == data_size) { + if(entry->compare_cb(entry->data, data, data_size)) { + return entry; + } } entry = _lv_ll_get_next(&dsc.entry_ll, entry); @@ -127,15 +132,28 @@ static lv_cache_entry_t * find_cb(const void * src, lv_cache_src_type_t src_type return NULL; } +static lv_cache_entry_t * find_by_src_cb(lv_cache_entry_t * entry, const void * src, lv_cache_src_type_t src_type) +{ + if(entry == NULL) entry = _lv_ll_get_head(&dsc.entry_ll); + else entry = _lv_ll_get_next(&dsc.entry_ll, entry); + + while(entry) { + if(src_type == LV_CACHE_SRC_TYPE_POINTER && entry->src == src) return entry; + if(src_type == LV_CACHE_SRC_TYPE_PATH && lv_strcmp(entry->src, src) == 0) return entry; + entry = _lv_ll_get_next(&dsc.entry_ll, entry); + } + + return NULL; +} + static void invalidate_cb(lv_cache_entry_t * entry) { if(entry == NULL) return; - dsc.cur_size -= entry->data_size; - LV_TRACE_CACHE("Drop cache: %u bytes", (uint32_t)entry->data_size); + dsc.cur_size -= entry->memory_usage; + LV_TRACE_CACHE("Drop cache: %u bytes", (uint32_t)entry->memory_usage); - if(entry->free_src) lv_free((void *)entry->src); - if(entry->free_data) lv_draw_buf_free((void *)entry->data); + if(entry->invalidate_cb) entry->invalidate_cb(entry); _lv_ll_remove(&dsc.entry_ll, entry); lv_free(entry); diff --git a/src/others/snapshot/lv_snapshot.c b/src/others/snapshot/lv_snapshot.c index 68c31ce680..c35af26a6b 100644 --- a/src/others/snapshot/lv_snapshot.c +++ b/src/others/snapshot/lv_snapshot.c @@ -129,7 +129,7 @@ lv_result_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_color_format_t cf, lv_ima layer.buf_area.x2 = snapshot_area.x1 + w - 1; layer.buf_area.y2 = snapshot_area.y1 + h - 1; layer.color_format = cf; - layer.clip_area = snapshot_area; + layer._clip_area = snapshot_area; lv_display_t * disp_old = _lv_refr_get_disp_refreshing(); lv_display_t * disp_new = lv_obj_get_disp(obj); diff --git a/src/stdlib/builtin/lv_string_builtin.c b/src/stdlib/builtin/lv_string_builtin.c index 3e0d5a8b64..aa20626b57 100644 --- a/src/stdlib/builtin/lv_string_builtin.c +++ b/src/stdlib/builtin/lv_string_builtin.c @@ -171,6 +171,15 @@ char * lv_strcpy(char * dst, const char * src) return tmp; } +int32_t lv_strcmp(const char * s1, const char * s2) +{ + while(*s1 && (*s1 == *s2)) { + s1++; + s2++; + } + return *(const unsigned char *)s1 - *(const unsigned char *)s2; +} + char * lv_strdup(const char * src) { size_t len = lv_strlen(src) + 1; diff --git a/src/stdlib/clib/lv_string_clib.c b/src/stdlib/clib/lv_string_clib.c index 93aacbe609..76a3c159ad 100644 --- a/src/stdlib/clib/lv_string_clib.c +++ b/src/stdlib/clib/lv_string_clib.c @@ -68,6 +68,11 @@ char * lv_strcpy(char * dst, const char * src) return strcpy(dst, src); } +int32_t lv_strcmp(const char * s1, const char * s2) +{ + return strcmp(s1, s2); +} + char * lv_strdup(const char * src) { /*strdup uses malloc, so use the built in malloc if it's enabled */ diff --git a/src/stdlib/lv_string.h b/src/stdlib/lv_string.h index 126aca9fb5..01798a4dee 100644 --- a/src/stdlib/lv_string.h +++ b/src/stdlib/lv_string.h @@ -83,6 +83,21 @@ char * lv_strncpy(char * dst, const char * src, size_t dest_size); */ char * lv_strcpy(char * dst, const char * src); +/** + * Compare 2 strings + * @param s1 pointer to the first string + * @param s2 pointer to the first string + * @return the difference between the value of the first unmatching character. + */ +int32_t lv_strcmp(const char * s1, const char * s2); + +/** + * @brief Duplicate a string by allocating a new one and copying the content. + * @param src Pointer to the source of data to be copied. + * @return A pointer to the new allocated string. NULL if failed. + */ +char * lv_strdup(const char * src); + /** * @brief Duplicate a string by allocating a new one and copying the content. * @param src Pointer to the source of data to be copied. diff --git a/src/widgets/bar/lv_bar.c b/src/widgets/bar/lv_bar.c index 88d034a254..09e5b0b042 100644 --- a/src/widgets/bar/lv_bar.c +++ b/src/widgets/bar/lv_bar.c @@ -453,7 +453,7 @@ static void draw_indic(lv_event_t * e) draw_rect_dsc.shadow_width = 0; lv_area_t indic_clip_area; - if(_lv_area_intersect(&indic_clip_area, &indic_area, &layer->clip_area)) { + if(_lv_area_intersect(&indic_clip_area, &indic_area, &layer->_clip_area)) { lv_layer_t * layer_indic = lv_draw_layer_create(layer, LV_COLOR_FORMAT_ARGB8888, &indic_area); lv_draw_rect(layer_indic, &draw_rect_dsc, &indic_area); diff --git a/src/widgets/canvas/lv_canvas.c b/src/widgets/canvas/lv_canvas.c index 212e4e2a6c..3eadc69a4b 100644 --- a/src/widgets/canvas/lv_canvas.c +++ b/src/widgets/canvas/lv_canvas.c @@ -70,16 +70,17 @@ void lv_canvas_set_buffer(lv_obj_t * obj, void * buf, int32_t w, int32_t h, lv_c lv_canvas_t * canvas = (lv_canvas_t *)obj; + canvas->buf_unaligned = buf; canvas->dsc.header.cf = cf; canvas->dsc.header.w = w; canvas->dsc.header.h = h; - canvas->dsc.header.stride = lv_draw_buf_width_to_stride(w, cf); /*Let LVGL calculate it automatically*/ - canvas->dsc.data = buf; + canvas->dsc.header.stride = lv_draw_buf_width_to_stride(w, cf); + canvas->dsc.data = lv_draw_buf_align(buf, cf); canvas->dsc.data_size = w * h * lv_color_format_get_size(cf); lv_image_set_src(obj, &canvas->dsc); lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(&canvas->dsc, LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(&canvas->dsc, LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); } @@ -205,6 +206,15 @@ lv_image_dsc_t * lv_canvas_get_image(lv_obj_t * obj) return &canvas->dsc; } +const void * lv_canvas_get_buf(lv_obj_t * obj) +{ + LV_ASSERT_OBJ(obj, MY_CLASS); + + lv_canvas_t * canvas = (lv_canvas_t *)obj; + return canvas->buf_unaligned; + +} + /*===================== * Other functions *====================*/ @@ -298,7 +308,7 @@ void lv_canvas_init_layer(lv_obj_t * canvas, lv_layer_t * layer) layer->buf = lv_draw_buf_align((uint8_t *)dsc->data, dsc->header.cf); layer->color_format = dsc->header.cf; layer->buf_area = canvas_area; - layer->clip_area = canvas_area; + layer->_clip_area = canvas_area; layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format); } @@ -340,7 +350,7 @@ static void lv_canvas_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_canvas_t * canvas = (lv_canvas_t *)obj; lv_cache_lock(); - lv_cache_invalidate(lv_cache_find(&canvas->dsc, LV_CACHE_SRC_TYPE_PTR, 0, 0)); + lv_cache_invalidate_by_src(&canvas->dsc, LV_CACHE_SRC_TYPE_POINTER); lv_cache_unlock(); } diff --git a/src/widgets/canvas/lv_canvas.h b/src/widgets/canvas/lv_canvas.h index fa7b16fbce..e2aac005eb 100644 --- a/src/widgets/canvas/lv_canvas.h +++ b/src/widgets/canvas/lv_canvas.h @@ -33,6 +33,7 @@ LV_ATTRIBUTE_EXTERN_DATA extern const lv_obj_class_t lv_canvas_class; typedef struct { lv_image_t img; lv_image_dsc_t dsc; + const void * buf_unaligned; } lv_canvas_t; /********************** @@ -91,6 +92,15 @@ lv_color32_t lv_canvas_get_px(lv_obj_t * obj, int32_t x, int32_t y); */ lv_image_dsc_t * lv_canvas_get_image(lv_obj_t * canvas); +/** + * Return the pointer for the buffer. + * It's recommended to use this function instead of the buffer form the + * return value of lv_canvas_get_image() as is can be aligned + * @param canvas pointer to a canvas object + * @return pointer to the buffer + */ +const void * lv_canvas_get_buf(lv_obj_t * canvas); + /*===================== * Other functions *====================*/ @@ -122,21 +132,8 @@ void lv_canvas_finish_layer(lv_obj_t * canvas, lv_layer_t * layer); /********************** * MACROS **********************/ -#define LV_CANVAS_BUF_SIZE_TRUE_COLOR(w, h) LV_IMAGE_BUF_SIZE_TRUE_COLOR(w, h) -#define LV_CANVAS_BUF_SIZE_TRUE_COLOR_CHROMA_KEYED(w, h) LV_IMAGE_BUF_SIZE_TRUE_COLOR_CHROMA_KEYED(w, h) -#define LV_CANVAS_BUF_SIZE_TRUE_COLOR_ALPHA(w, h) LV_IMAGE_BUF_SIZE_TRUE_COLOR_ALPHA(w, h) -/*+ 1: to be sure no fractional row*/ -#define LV_CANVAS_BUF_SIZE_ALPHA_1BIT(w, h) LV_IMAGE_BUF_SIZE_ALPHA_1BIT(w, h) -#define LV_CANVAS_BUF_SIZE_ALPHA_2BIT(w, h) LV_IMAGE_BUF_SIZE_ALPHA_2BIT(w, h) -#define LV_CANVAS_BUF_SIZE_ALPHA_4BIT(w, h) LV_IMAGE_BUF_SIZE_ALPHA_4BIT(w, h) -#define LV_CANVAS_BUF_SIZE_ALPHA_8BIT(w, h) LV_IMAGE_BUF_SIZE_ALPHA_8BIT(w, h) - -/*4 * X: for palette*/ -#define LV_CANVAS_BUF_SIZE_INDEXED_1BIT(w, h) LV_IMAGE_BUF_SIZE_INDEXED_1BIT(w, h) -#define LV_CANVAS_BUF_SIZE_INDEXED_2BIT(w, h) LV_IMAGE_BUF_SIZE_INDEXED_2BIT(w, h) -#define LV_CANVAS_BUF_SIZE_INDEXED_4BIT(w, h) LV_IMAGE_BUF_SIZE_INDEXED_4BIT(w, h) -#define LV_CANVAS_BUF_SIZE_INDEXED_8BIT(w, h) LV_IMAGE_BUF_SIZE_INDEXED_8BIT(w, h) +#define LV_CANVAS_BUF_SIZE(w, h, bpp, stride) (((((w * bpp + 7) >> 3) + stride - 1) & ~(stride - 1)) * h + LV_DRAW_BUF_ALIGN) #endif /*LV_USE_CANVAS*/ diff --git a/src/widgets/chart/lv_chart.c b/src/widgets/chart/lv_chart.c index acb4368c33..e16e4ecd81 100644 --- a/src/widgets/chart/lv_chart.c +++ b/src/widgets/chart/lv_chart.c @@ -719,11 +719,11 @@ static void draw_div_lines(lv_obj_t * obj, lv_layer_t * layer) lv_chart_t * chart = (lv_chart_t *)obj; lv_area_t series_clip_area; - bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, &layer->clip_area); + bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, &layer->_clip_area); if(mask_ret == false) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = series_clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = series_clip_area; int16_t i; int16_t i_start; @@ -787,16 +787,16 @@ static void draw_div_lines(lv_obj_t * obj, lv_layer_t * layer) } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void draw_series_line(lv_obj_t * obj, lv_layer_t * layer) { lv_area_t clip_area; - if(_lv_area_intersect(&clip_area, &obj->coords, &layer->clip_area) == false) return; + if(_lv_area_intersect(&clip_area, &obj->coords, &layer->_clip_area) == false) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; lv_chart_t * chart = (lv_chart_t *)obj; if(chart->point_cnt < 2) return; @@ -812,7 +812,7 @@ static void draw_series_line(lv_obj_t * obj, lv_layer_t * layer) lv_chart_series_t * ser; lv_area_t series_clip_area; - bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, &layer->clip_area); + bool mask_ret = _lv_area_intersect(&series_clip_area, &obj->coords, &layer->_clip_area); if(mask_ret == false) return; lv_draw_line_dsc_t line_dsc; @@ -934,17 +934,17 @@ static void draw_series_line(lv_obj_t * obj, lv_layer_t * layer) } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void draw_series_scatter(lv_obj_t * obj, lv_layer_t * layer) { lv_area_t clip_area; - if(_lv_area_intersect(&clip_area, &obj->coords, &layer->clip_area) == false) return; + if(_lv_area_intersect(&clip_area, &obj->coords, &layer->_clip_area) == false) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; lv_chart_t * chart = (lv_chart_t *)obj; @@ -1054,17 +1054,17 @@ static void draw_series_scatter(lv_obj_t * obj, lv_layer_t * layer) } line_dsc.base.id1++; point_dsc_default.base.id1++; - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } } static void draw_series_bar(lv_obj_t * obj, lv_layer_t * layer) { lv_area_t clip_area; - if(_lv_area_intersect(&clip_area, &obj->coords, &layer->clip_area) == false) return; + if(_lv_area_intersect(&clip_area, &obj->coords, &layer->_clip_area) == false) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; lv_chart_t * chart = (lv_chart_t *)obj; @@ -1128,7 +1128,7 @@ static void draw_series_bar(lv_obj_t * obj, lv_layer_t * layer) col_dsc.base.id1++; } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void draw_cursors(lv_obj_t * obj, lv_layer_t * layer) @@ -1139,10 +1139,10 @@ static void draw_cursors(lv_obj_t * obj, lv_layer_t * layer) if(_lv_ll_is_empty(&chart->cursor_ll)) return; lv_area_t clip_area; - if(!_lv_area_intersect(&clip_area, &layer->clip_area, &obj->coords)) return; + if(!_lv_area_intersect(&clip_area, &layer->_clip_area, &obj->coords)) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; lv_chart_cursor_t * cursor; @@ -1226,7 +1226,7 @@ static void draw_cursors(lv_obj_t * obj, lv_layer_t * layer) point_dsc_ori.base.id1++; } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } /** diff --git a/src/widgets/dropdown/lv_dropdown.c b/src/widgets/dropdown/lv_dropdown.c index 3bdfd3a7d4..db4bb84afd 100644 --- a/src/widgets/dropdown/lv_dropdown.c +++ b/src/widgets/dropdown/lv_dropdown.c @@ -908,10 +908,10 @@ static void draw_list(lv_event_t * e) * the selected option can be drawn on only the background*/ lv_area_t clip_area_core; bool has_common; - has_common = _lv_area_intersect(&clip_area_core, &layer->clip_area, &dropdown->list->coords); + has_common = _lv_area_intersect(&clip_area_core, &layer->_clip_area, &dropdown->list->coords); if(has_common) { - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area_core; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area_core; if(dropdown->selected_highlight) { if(dropdown->pr_opt_id == dropdown->sel_opt_id) { draw_box(dropdown_obj, layer, dropdown->pr_opt_id, LV_STATE_CHECKED | LV_STATE_PRESSED); @@ -928,7 +928,7 @@ static void draw_list(lv_event_t * e) draw_box(dropdown_obj, layer, dropdown->pr_opt_id, LV_STATE_PRESSED); draw_box_label(dropdown_obj, layer, dropdown->pr_opt_id, LV_STATE_PRESSED); } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } } @@ -1005,13 +1005,13 @@ static void draw_box_label(lv_obj_t * dropdown_obj, lv_layer_t * layer, uint32_t area_sel.x2 = list_obj->coords.x2; lv_area_t mask_sel; bool area_ok; - area_ok = _lv_area_intersect(&mask_sel, &layer->clip_area, &area_sel); + area_ok = _lv_area_intersect(&mask_sel, &layer->_clip_area, &area_sel); if(area_ok) { - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = mask_sel; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = mask_sel; label_dsc.text = lv_label_get_text(label); lv_draw_label(layer, &label_dsc, &label->coords); - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } list_obj->state = state_orig; list_obj->skip_trans = 0; diff --git a/src/widgets/image/lv_image.c b/src/widgets/image/lv_image.c index b0f9514528..74da959600 100644 --- a/src/widgets/image/lv_image.c +++ b/src/widgets/image/lv_image.c @@ -360,7 +360,7 @@ void lv_image_set_scale_y(lv_obj_t * obj, uint32_t zoom) if(zoom == 0) zoom = 1; - scale_update(obj, img->scale_y, zoom); + scale_update(obj, img->scale_x, zoom); } void lv_image_set_antialias(lv_obj_t * obj, bool antialias) @@ -664,7 +664,7 @@ static void draw_image(lv_event_t * e) lv_draw_image_dsc_init(&draw_dsc); lv_obj_init_draw_image_dsc(obj, LV_PART_MAIN, &draw_dsc); - lv_area_t clip_area_ori = layer->clip_area; + lv_area_t clip_area_ori = layer->_clip_area; lv_image_get_pivot(obj, &draw_dsc.pivot); draw_dsc.scale_x = img->scale_x; @@ -680,17 +680,17 @@ static void draw_image(lv_event_t * e) lv_area_align(&obj->coords, &img_area, img->align, img->offset.x, img->offset.y); } else if(img->align == LV_IMAGE_ALIGN_TILE) { - _lv_area_intersect(&layer->clip_area, &layer->clip_area, &obj->coords); + _lv_area_intersect(&layer->_clip_area, &layer->_clip_area, &obj->coords); lv_area_move(&img_area, img->offset.x, img->offset.y); lv_area_move(&img_area, - ((layer->clip_area.x1 - img_area.x1 - (img->w - 1)) / img->w) * img->w, - ((layer->clip_area.y1 - img_area.y1 - (img->h - 1)) / img->h) * img->h); + ((layer->_clip_area.x1 - img_area.x1 - (img->w - 1)) / img->w) * img->w, + ((layer->_clip_area.y1 - img_area.y1 - (img->h - 1)) / img->h) * img->h); draw_dsc.tile = 1; } lv_draw_image(layer, &draw_dsc, &img_area); - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } else if(img->src_type == LV_IMAGE_SRC_SYMBOL) { diff --git a/src/widgets/imgbtn/lv_imgbtn.c b/src/widgets/imgbtn/lv_imgbtn.c index c8c2f7b42b..9c402c4f27 100644 --- a/src/widgets/imgbtn/lv_imgbtn.c +++ b/src/widgets/imgbtn/lv_imgbtn.c @@ -262,12 +262,12 @@ static void draw_main(lv_event_t * e) clip_area_center.y2 = coords.y2; bool comm_res; - comm_res = _lv_area_intersect(&clip_area_center, &clip_area_center, &layer->clip_area); + comm_res = _lv_area_intersect(&clip_area_center, &clip_area_center, &layer->_clip_area); if(comm_res) { int32_t i; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area_center; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area_center; coords_part.x1 = coords.x1 + left_w; coords_part.y1 = coords.y1; @@ -280,7 +280,7 @@ static void draw_main(lv_event_t * e) coords_part.x1 = coords_part.x2 + 1; coords_part.x2 += src_info->header.w; } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } } } diff --git a/src/widgets/label/lv_label.c b/src/widgets/label/lv_label.c index 8d44d4b09d..83a66da2f0 100644 --- a/src/widgets/label/lv_label.c +++ b/src/widgets/label/lv_label.c @@ -754,7 +754,7 @@ static void draw_main(lv_event_t * e) } lv_area_t txt_clip; - bool is_common = _lv_area_intersect(&txt_clip, &txt_coords, &layer->clip_area); + bool is_common = _lv_area_intersect(&txt_clip, &txt_coords, &layer->_clip_area); if(!is_common) { return; } @@ -765,17 +765,17 @@ static void draw_main(lv_event_t * e) txt_coords.y2 = obj->coords.y2; } if(label->long_mode == LV_LABEL_LONG_SCROLL || label->long_mode == LV_LABEL_LONG_SCROLL_CIRCULAR) { - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = txt_clip; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = txt_clip; lv_draw_label(layer, &label_draw_dsc, &txt_coords); - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } else { lv_draw_label(layer, &label_draw_dsc, &txt_coords); } - lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = txt_clip; + lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = txt_clip; if(label->long_mode == LV_LABEL_LONG_SCROLL_CIRCULAR) { lv_point_t size; @@ -800,7 +800,7 @@ static void draw_main(lv_event_t * e) } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void overwrite_anim_property(lv_anim_t * dest, const lv_anim_t * src, lv_label_long_mode_t mode) diff --git a/src/widgets/roller/lv_roller.c b/src/widgets/roller/lv_roller.c index 36eb871b27..b48ae3d78c 100644 --- a/src/widgets/roller/lv_roller.c +++ b/src/widgets/roller/lv_roller.c @@ -485,7 +485,7 @@ static void draw_main(lv_event_t * e) get_sel_area(obj, &sel_area); lv_area_t mask_sel; bool area_ok; - area_ok = _lv_area_intersect(&mask_sel, &layer->clip_area, &sel_area); + area_ok = _lv_area_intersect(&mask_sel, &layer->_clip_area, &sel_area); if(area_ok) { lv_obj_t * label = get_label(obj); @@ -523,11 +523,11 @@ static void draw_main(lv_event_t * e) label_sel_area.y2 = label_sel_area.y1 + res_p.y; label_dsc.flag |= LV_TEXT_FLAG_EXPAND; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = mask_sel; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = mask_sel; label_dsc.text = lv_label_get_text(label); lv_draw_label(layer, &label_dsc, &label_sel_area); - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } } } @@ -547,10 +547,10 @@ static void draw_label(lv_event_t * e) /*If the roller has shadow or outline it has some ext. draw size *therefore the label can overflow the roller's boundaries. *To solve this limit the clip area to the "plain" roller.*/ - const lv_area_t clip_area_ori = layer->clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; lv_area_t roller_clip_area; - if(!_lv_area_intersect(&roller_clip_area, &layer->clip_area, &roller->coords)) return; - layer->clip_area = roller_clip_area; + if(!_lv_area_intersect(&roller_clip_area, &layer->_clip_area, &roller->coords)) return; + layer->_clip_area = roller_clip_area; lv_area_t sel_area; get_sel_area(roller, &sel_area); @@ -560,27 +560,27 @@ static void draw_label(lv_event_t * e) clip2.y1 = label_obj->coords.y1; clip2.x2 = label_obj->coords.x2; clip2.y2 = sel_area.y1; - if(_lv_area_intersect(&clip2, &layer->clip_area, &clip2)) { - const lv_area_t clip_area_ori2 = layer->clip_area; - layer->clip_area = clip2; + if(_lv_area_intersect(&clip2, &layer->_clip_area, &clip2)) { + const lv_area_t clip_area_ori2 = layer->_clip_area; + layer->_clip_area = clip2; label_draw_dsc.text = lv_label_get_text(label_obj); lv_draw_label(layer, &label_draw_dsc, &label_obj->coords); - layer->clip_area = clip_area_ori2; + layer->_clip_area = clip_area_ori2; } clip2.x1 = label_obj->coords.x1; clip2.y1 = sel_area.y2; clip2.x2 = label_obj->coords.x2; clip2.y2 = label_obj->coords.y2; - if(_lv_area_intersect(&clip2, &layer->clip_area, &clip2)) { - const lv_area_t clip_area_ori2 = layer->clip_area; - layer->clip_area = clip2; + if(_lv_area_intersect(&clip2, &layer->_clip_area, &clip2)) { + const lv_area_t clip_area_ori2 = layer->_clip_area; + layer->_clip_area = clip2; label_draw_dsc.text = lv_label_get_text(label_obj); lv_draw_label(layer, &label_draw_dsc, &label_obj->coords); - layer->clip_area = clip_area_ori2; + layer->_clip_area = clip_area_ori2; } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void get_sel_area(lv_obj_t * obj, lv_area_t * sel_area) diff --git a/src/widgets/span/lv_span.c b/src/widgets/span/lv_span.c index 33f317ea5b..4e40a30e8e 100644 --- a/src/widgets/span/lv_span.c +++ b/src/widgets/span/lv_span.c @@ -806,9 +806,9 @@ static void lv_draw_span(lv_obj_t * obj, lv_layer_t * layer) /* return if no draw area */ lv_area_t clip_area; - if(!_lv_area_intersect(&clip_area, &coords, &layer->clip_area)) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + if(!_lv_area_intersect(&clip_area, &coords, &layer->_clip_area)) return; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; /* init draw variable */ lv_text_flag_t txt_flag = LV_TEXT_FLAG_NONE; @@ -1056,12 +1056,12 @@ Next_line_init: txt_pos.x = coords.x1; txt_pos.y += max_line_h; if(is_end_line || txt_pos.y > clip_area.y2 + 1) { - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; return; } max_w = max_width; } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } static void refresh_self_size(lv_obj_t * obj) diff --git a/src/widgets/table/lv_table.c b/src/widgets/table/lv_table.c index 5d53c6962e..6f54d39d44 100644 --- a/src/widgets/table/lv_table.c +++ b/src/widgets/table/lv_table.c @@ -651,10 +651,10 @@ static void draw_main(lv_event_t * e) lv_table_t * table = (lv_table_t *)obj; lv_layer_t * layer = lv_event_get_layer(e); lv_area_t clip_area; - if(!_lv_area_intersect(&clip_area, &obj->coords, &layer->clip_area)) return; + if(!_lv_area_intersect(&clip_area, &obj->coords, &layer->_clip_area)) return; - const lv_area_t clip_area_ori = layer->clip_area; - layer->clip_area = clip_area; + const lv_area_t clip_area_ori = layer->_clip_area; + layer->_clip_area = clip_area; lv_point_t txt_size; lv_area_t cell_area; @@ -819,10 +819,10 @@ static void draw_main(lv_event_t * e) bool label_mask_ok; label_mask_ok = _lv_area_intersect(&label_clip_area, &clip_area, &cell_area); if(label_mask_ok) { - layer->clip_area = label_clip_area; + layer->_clip_area = label_clip_area; label_dsc_act.text = table->cell_data[cell]->txt; lv_draw_label(layer, &label_dsc_act, &txt_area); - layer->clip_area = clip_area; + layer->_clip_area = clip_area; } } @@ -831,7 +831,7 @@ static void draw_main(lv_event_t * e) } } - layer->clip_area = clip_area_ori; + layer->_clip_area = clip_area_ori; } /* Refreshes size of the table starting from @start_row row */ diff --git a/tests/ref_imgs/libs/tiny_ttf_1.png b/tests/ref_imgs/libs/tiny_ttf_1.png index c4ec1a0d2695b295d70bcdc73031a168b9012be9..9cccd38181c91ce3094e412a8fb9f91ffb372e8c 100644 GIT binary patch delta 12752 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 delta 12763 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 I*LH~dA04Zpr~m)} literal 48338 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 z%0A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�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 Nr*f*YWisaB{|)w3$+Q3f literal 16771 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 INb39kU&YP-t^fc4 diff --git a/tests/ref_imgs/widgets/image_transform_align_offset.png b/tests/ref_imgs/widgets/image_transform_align_offset.png index a8b1543e51dbf045ced2cdb609ae59832f8c35e5..100ba9b1be52cc82092dae3d692790e0736171a8 100644 GIT binary patch literal 18896 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 KVX1<7$o~WO6cxJw literal 17173 zcmeI4c|6qL-}g}@B9$deqm=CN&AyjJvXy-|_U!w$U2r7W-uYi9%5n) zA-l0JS;pK4-}`r8*W%Q+ke=sHIe9k%VbI$v`&hu6DBMoI5Di$gd5)vAf z2Z~xGB&V*DkdXeQBm;lbZ)o4Frvges9Zh! zE&i|6D-`g*%x+JS2WBFzq=gZ@{wu7~JzY8-?qi<|N9%=?_Vv{BJ-8~e+I13<6|!O$ z6std(KmC9@l^fo8M*8e@BHa_xkJUyF-aCe4@*~$f6Zy*tl(K)X6l_L$?QKeG=56GK zNEM5Th};10bTz>lb_RTRtICCvl8`)5Y65Ti>SY)?_z^QXH3`X`+fs?I<#2fSO%e5~!oyio!%rWt zQr}4&F??lGUSb{MWqRWx2ZRY(#vCbhuFkQ^$r@qogL0Dy@8rzXm~b;t;7-bS|4Ig< zHY7>>-V?SYYmm(8W%}8YgJqE8!i6}8iqr=;ZotW_UJdY!x=gGY$mOj1$z{E}UHQ~r zf$`~$>M9``a=zDeeIJI#;ai(e2n3Fc7b;SJRYMs)P@*}#R1^_q#tM`f>Jq=$e5^0J(F(PPSqo&BLQLup@^FO#j+!^6YEvQp4(j*O>alrV?y0tV{p z>M6HO`$YtHr+z}M+pwos-5QhmzI`{T@2aIQP_FC{N$u4MoNA`ZIIijoa6Na ztEqVv^M!?lvBM!a-e-R-c;BI@cw>E?myhotgy;>qCM5k@{m$Lf+IM3ZOZfE5G9?E@ zTF*sVh=_`ci;5P&V0t=l1-be7czOAGcqaUWg-TD}{^~xpVEt83|LAbWIERVyAuQH= zIkVbhTHp93cDkdZV_|t2Qadt87p?d%FK_Dinx>qjdu2fZ0)fyUPz(sz(>E5Rx0Ci0 zLcCYBwtn$ZWMb`!#;jVxT&zk*n8Q~X$5*m1>D^5_V${6LP5nsJ04+hIVL&9 zH@C_YJLIg7d$PB;=Y!ser?c$IlyuaC_w@9X6&0mQ`!0Jk-xlI~b=)p>UPk`5LhZwx zgU`07t{e?1CG*MIz|RYQ*%7Gc;d7ot-V``(vsdFRgvj0t?=l(@i2oT$`=*+~2L_%Hpajpm`D+0M@HoS)Bq z#LaRgE#R!bzyHo?u)a$B!KpK}hXHNahTz~R+AEE-*{A~Nub)cp91pP#kA68DmnJg( zW*vPqH~&&+mrTgPZ`~aqA79@bS6AOU)5u&DZuz?oyd`(E?X-)8^`%F2O*+XQ#24`c zZ${f&-0EI7E4AE}i#v7T;1k~qqUk$Vx{0s_Io1Z`LDyny|^ za5^(MqP)EP!-pqc0Wy%#`F#Db`6hY4N$jl@M=3dSw~cGZG2Zc=*MP^krq*})CEV08 zT;ZPlL9W>C$&m)E|K&A_(CzW-HHo3t5&TXf(GKP%t4(B7Xg(F!kK9X^G$wLv!N%PUOS`7ZJ0S zZ=SvOy1I=Ie)Xb>qg-(XJIlDh`Tl7~!@tK@1o`+nzy4k_(rys~v(L*EUR1ORt1KnK zggcQ@aiqp*e}GCRu=^@e#7!yHO;=f)<+EHJqL4A~F-_U7j1 z$jC?^56u3iueYAA{%(+YZ7$`t{{H@+>W@pK)%(~4`I>;OA~M)!fZW(8q!%` z*?P=+pDILc;H4r54Gj&lOkY>;eTe%dCIv-~*Sj0DJ6l`TH8l&!TT>gP;=Cs#pqUiL zsih5<*)jRm%GA;;C#|I`DmBc_FXG{8${y;pe^A=bwpKf}G#r0jxf%BQ!Dp^pf^?Mp zzYp^1ypP8;Ioa0EuHgN9wZ9m1dhM!)wY0P-u3xBO=<+$47}>m0lo52098L2^6Z6J; z;xg)#w|7lE?QCD361O$VqjhXVYK@mtn2!(X)|cB7rS5rP^WjzsAD1+$zCOq+#^SQ~ z7EMle;cV9X`UD#U_8vJoi2Q*x$7Kq>)Sn_ z0WXN8mm$56LPGQm=POdo#Liib+I)C+=kIrwlT~RndBw%3x;mACk3~ft zcdoh({$*`r!xA|*HnyBmeu^=*`ef{H+R$Fmfci?XxgciN6qEUx5Bd@)vO`1WCZfC% z(z`{klLn2nJ%4`foBQ_db4Jj6ax!YBw{eG0E-RS^Ha%Oak!Tqwk zZKVf)_zC3U=jP6xr~NXuRxG!5wzltNO%w&|GYePiqG(ZZ+`_3R6sRagi1ruVu)z&@Qo zAix{81GGIoEiC3L)H5DFoCzK7r5t^6(y|w(97L#aL4{qt#^xDNK zst;t=7FU%lRZ08LAw#y8>f(E7(c@^S#c=h~0=@wHt7(j!vp`Fam1P}?$J}87WV)Qki4`pQk&Ee=N!e(7$W?^AwPTRad3bThuxUDuc1omdy z8&z1grVkeL@pf?aP;^0#10nN*xOEeYuF268)H&G-cAeJ`tb4P4Jv}@?Dsbr>h4O3# zKc9a=Xu*L0?m8!WTzp>O&drXlj?LYmQv?E&pcy|OAM1{TukTKsrvPzQ-uwy+i%~2UCqoizPWHcgZ!Y#nVOc|xmj}{OV?4591z2h;udEB@DvbZ1Q zeC<6{MHr?*n^PH!_KNM4V+dQN7y+rq{J_`*e^DRIF{*;9aXf ze!OwmbgfT+?C*+`I3?nR4u z$k#Ybcl6EoJ=u&C7iX99`mwkrw>Q@k>*zSp-=8Sx?dyx)85`T#3H|9Np^zJv#HVL% zV<%`-yV@M#lhTPBz*gDyqVRYovx5wDmM~Xvdm?8BB-lFU)Zi!e=f{irzygfdK-*1% zZFhH9Q+7AYO`@Lo{QNDmxhF1iD4S0BOi$MSCju)N)AjXrrO;^=&zbks*VJ0RT|!!1 z_Ceudd8wBKBA2Ks@>C7@Zbax&5<*?FsdDQ#o&$|fe>BhJnurJ$sAr`{Osl(~O zK8Ltv$PxadY8F?Dtyvi-KEo_FY{X-^Wc6seE*{6$!Je&Z6AJ_7X|b_DINjuAYiumz zEhp*FkWN9w_Rda9is0UuFHwkZvC7iLa43x21_bl0kx`;1{NUH;=qzbp(>jm*qDsrD zFM+W!G0NifEkYVOa-MVFEG!InMm;e&-*M5_%P#2Pdv`xT$H#)vyWOt6S<*Ydd>h|n zLozKxpkh~#_VpQku|=w(4+lq2(6!Hn+65Zf4s2{}A4_^=Wj{@OP9I!%cQMysG*Y;})70iJ)I!zpbuT+Nd&NZZ$59FuhIc=DS53L4`P2 zPr-tfAlEh6a}?+L#&@LQ*>(h3<=VXqN%=i9mT269IokW_((ANI(%!$!ZM1{2d8lO<h~JOd4cWb~ zEthf>+@?FGK{CP~^gH+FM`Ksh=JAfy?xSk*!~CzYg}`$y_9t58DSxlj@0i^WEBt)* zZBpW79bp>_4jkM%zvr%>A9vr6R1v4YrYLmz-0xE`i$Io!``o;im9>&u z8+Rdmdc2q!dl9{C5(5)c%G(jSV7Jn+UYa*w-GPk#>*ZhL|Qv&t_ z-VmcP-*q&DW+b0JJ}PgE7H09?d}%eX!7+KPNJogrpr7C1kx!>Utg*524nEKvvsGv( z=Q-2W8+zypP5~_94RH91!hS?{_Sh!09ELQ?GR^uF7YkaN$k4UX($~|})CC<`;B?4h zEd2J!#fzDl`MiutFwoy1oUcRJ}U`}oW4~Ac}@@t=`%;2-*hXi?_m9a~)tv9nu3+KD? zRa2;`s1$O))t>52f#1+ve=vRd^wkSst-HaQs($YtDI!pvfqW4*<0es5T+~Rk>)j1% zBnE8_njbniYI|;c`}VDNcmykGvao!M`)hA|H?wpD3Wci97ZtnM+1Z&T@0zWJl6uC< za#SK$DoireMQQNu?Dt;EGLE-`!onM8#zU7uZy&9Ch_OBIyLS%}?4hF~-IJ3X2rRCz zZ+L7>?qVzhJv}`WLtLBQyJLNuVUf5Vy8;J6ywF_}Rh^RrY#Ugg71 z;NU_}B~Vt1BQ~88m^CsBnKqA%iekED@?&_IIa*O`bU7?6?9tt(AF=$F6+iMjQ+l#x zGm_GDO-*IDwwOp7$v}!Xw@5LtY#iydiHhfVOJr`S&e+-5_H?~?Hv9|>@SZ~x|5^Z57_Z!Z zT9~)&_u~ibIqCy!w8}CN-#U}2nRz_k(M4`?D?lQGvDW3NWr7S{BX{nUdcs4LyC35+ zGd1kiA;e4KZy(&~?;8gF0_yG%@OirU64ZeF0v&>pe?JF{u}Y7iprGgx%ki!=88$S; z;c(Zln=cQmk-*M^F%S_;HNAel#oX=9PFm|V1x~+)vF7GS{EX86MQdu>8!Pg^@3^>V zxVu-3ujp5$o~k+xerK}|`o;1(OMw=tyzW%xW z4LiHk_mPq0v^216v4XuNHipW-l3(chQBx|KWOnx!(XzpNpZE8vL#pu=Z4d#|k5BsE z-M6Qb*-8t`e|6_-xyN)&5}&?FW6qljB1ifKV zXS<}p419Du)sYtR)u_hF&YT$CnPML3>8a|7Ez;!^cd19z*4A1d9^APqq}`GSE#wv! z_MB?ip}K}dBDWjR=;EqHu>ZDMR){+4xsLj|&WzRx%ie(|AL$$G&zlO81*#NsYjShV z2{VY&QfK1odE(_bTKV5UpMx#cIwWN5<;$3`{EwNLnd%90mgzICu}nKl{usQ+u!zP! zi7f>5n$Be^+5IJ9n0>Zv;4+hI{p-X;OGK{$SSQ4v{xWsR30jwaGe&*-liJaF(@D(O z&~V3$|avpJYxuYdPmhv z!dA9(g$aE20s5uZ-SpG{lJ49dm}Ph0WTOS@q`keKQY3y*zuL_}F)tAlX83igf{c{! zddoxAOOOPhdaC13je;7&K@ARecUf6j5^E(?G51AyBO^Z^hLjd4FRn1Xe(|F9Mj2Vv zTdY8k9N*=Sw{Mp~AH9cBB`AA-J*2)10rKLB^m#RqE&V1?QP&ItY^%H`SED{I zntb<2+J+`;e^>;f_bA(cUA+ELssB5w)PGj1e|z;)#8l!Z1EGzw3!o?Ya{X9%lwuQ> zeJW`EN3;L`RI`sP@cX0L|IzIKX!if7ntik=iy^pTKV|{`==Xp0`#<{qAN~H1e*Z_m z|D)gk(eMB0_kZ;JKl=S2{r>+t{l5K{LHbQ6F`!W+jQtuCnP~kQn(>Sp1?9uxuA>gwM!Un;|@cu{x<^n=3PX>9^ujyf@ z<_S7TLQ=A=jr9++U|s4cphEi#q(;a<_~^=k=6r-gQbyhT@m=nd`o93!kGZ+mqGPMP zOcnDipFCJx!2|>V-TFfG3j?)DULn;wT=Q&I*j*raQ&HS^C|dOsiCRL_{kle-ddr&h zftECNWm~R2keDF}oZ)T~C3o(`wkmR5JE}EP11Rl~gz1g53Ca>#5AjslKw$qzfliGK zOX5!u%b50}LYrR(9PtsR`|mko?vv)7NZjP@NBGqLhEh&UiFv|%#W9Eee?iLTN6@vc zWCRjILh`Bm*?%3O&DNjtOY(m21GIzLLp%A{!!W6$vYp;C}Zw(T$^;yT}(fc z@KKCiO8;KM=M2{}WQpR3BLCr?$DZ35Dq!yO-+cF2;Npe84~((ViVEvSLe!F3Aec@% zes+L|_d0dz&6A-TcvODzEFiE61S8Fap>aWgW5=qPQQKZa7;o%?8;Ln2XE+GKdxxYh zX@F5a`wzgKn+ki;R{cP6ab6PXnlm(z7tzAOl5}*(07+n=G+<^{9V)#<8a^L1( zHz5`*RLNzrPjpx>e+vlc;>vziAJpYiqi;S)K>>o~H=$X?EkpF{+=yfpq>d*h{M*qL=s^mZG;_d%#+rz)>r9o;v8OZsl z7GYT`lBpB=@Jf6dH(X_qPo{mkB}I!+dU`tG<+Qc60UZd~CI$wEX}pZj!`b1SA+;AvsZQXiVCqx;F5C@kC*c8F{)cH7Wjhqu(7cL5ZieZyu%Acj=sJ= z_k-VDIhhiG!^2{+#r7PsvV`JNrkJWLGO5N|9Jg;P8l{6BqQDcTyxDrg=B}u<_62KF ztL_;nZw5KT4%8lpvp+*yf*5uff;)D0qP`8+IWN`}yNCn_2cyRQl_~$S>&X-?*0-~> z)7RDQ0>l^c9CIqeNxN<`P$y4)=OJo_SPFN4fA_9Lx47e8Zel_9ONp#mY_IEBeXB@! z;rJL9i*nuv=v#JHQZ?WMV`A3dz2iXPLV_vIpP*D>g-1nIHICV)D^LQ|zPPlTOR>C0 ztisE_b)-7l&vLfR^xnM|?RuPTRkw;J#;K;KtPEpDyl>{RywOYC&6M;k!>m5bU<6zM zz?9#cG*xCv&&v2XjedR`NfD^oJH5FHn3cGAwTAHe`uf1-#^U$ZhtE!(32m6dk2N;l zi=rL(?8Oa;Swr=XF*aD`TRwyMH(aLbZ%n8x=oz!~%WN6S`Z;%vv%GOub~sAAi^%JMIZS`#IU+^^k^egvjuo4BzD&RWrmmY6b}GA%nm zGQCZEySsS=1a_SsM_vp6Cem%IO^|%~RO_T)`KzgtlOB8)b9y0YzWl^VZMd>kQX)0e zC0qfY+dPw;+}Ll0WHvVW zdGZU$kY$t3cI^T!Eg9CvwYbU2cRXX%Q2OI8)`e*`Ev)zsVNku9?m3cqSiF*o%2MOL z<<6*ZrM))b?S5`#1n0q2SlsJF2AE<1k`CavfmPL!1TfJ6AXRv543F#`-Mam)?9C2;5n2@S0z*=Kr>`laiEVV;$sE zS_lwqZ|@_TTsJ^_SnsK$!m&}Jl}D#Mvn@fI)R^V;Ng9aQ3e~W}CQzz>9m1 z@CLd0Q>05ifdK&l&d&Hb`T>zQD5>J2;-E&s(MREQ0KEnjCNTC8@NMkIfaJvxy-t`l zj?@M1=^|A=I-$y{OLF72^B|nkG8PYhTdkplw?^aQ4pYo~cGnVIu}JUWkTK!V17%2p z-6YwmXLtPX@6K_ahuJG}ypD`K!moMxw9vKD)Ymv(e?8dU*x%bTGB)-$OHL1OlG$5%-OWDN=F%lbSSqn)*d7s?HW@*WxCN z&HCrhp1!zlD3ob4${UW7BMYriFO}x(;8m2|&0z1?G&84TUYU=?JSbhcrPyE`sSFgzj zU#UmDB0uPHIu9!{d=>oS(EvXR=YfhCciknJ+o||OwM_UpLNu-06PwrxPk!#sMnOUh zd{J-UEQW@qqM~Qw+2Uwv)a%=ojjoov-5s7wh_v`Vh*?AeBrYvE*+)RruyWXGBW8Bk zsYW|44s&}XKE7x5CsYQ4UeL~2^)?7WukH&Vu$9;(s{R|lj+c3IYtpH%k)vgPIItX? zY}_al+8(M_-M;MvZ!C&vvFun>fb;s>W?fS>7fEk)N(+X5@?U$$5IdXzksS$c|Gwo; z{M#&}R6^!az5m7>y{h;^M*5aP$##bg5luu9SX{PqtPFWdOD7Hw=W6iV&(9R34ty** zRGi$Z*@orjDkRLVh1K`-Xi|LE|HtiTk)MBb@L*F|J7cAOk5T8Im>q@Tr?<9`g$8?? zMd}H2`VAu`?}z-_^PeF>O603j2Ikbk5w%4^gM(Q z77z905C`Qi!+!cuAK4d6U!Lony>u%DAUU7C+kqo(X6p{)Dktt^la4g?fE#V{0FMkr zl@d4=pFKU!>6afS`leM=ui1_7x{fa_NVzvUW24T%50<|`au4bUeaGy{pSQD5Rs28! zD+*n)g9F+0wBF39qhW;ki#x7xF3$Y%iI?<@dt9gwgCgDLp+QePgYV&nJy}!6x4V=0 zk_C*c-4m+qC%ueZ5UYOtIhuYl&GR}A`l~m}RFC=%ex~xN;5>{5Hez^mZj&)^{I{r4 z@;HwmH#d_dVRdy~)RCh3x$BZ2id%kVXQf^^ugGDO<*b$8?}kfUlaUitFjG1X3A^}} zk)FyfK{zGFcmo@&WX3ngPO2{rBV)t<^}9<6wnTO$AhVkG8d@IFGDxxJ<=haR3 z;Htk_DkbB-k~J1(2&DdlXQ323MIvm@4$!x|CYoa+$`)bvNV(9DKZIVU5VvLvGBOf^ z*H!o#(fjdO@e<>Vj4bWTys3L%Aa?2L#QmIuXu6RaakHKMAS+)#A0O|A#$EJ6{FTLp zg~J)bPVi#W84pj7a5|X%m&vsj<%Gkf@x!S%+69vp212Qf30!2Pq5Aqeqjk)$zkUnr z?`JailY5&Zzcun#HY|A0rixRLp-*RoL8g$o>&U98W=)znx_T5B>(t5VUZ$>&j)7a% z7!(podqs+k@-)Q%SMEr9I^bUgkygrqf&1e`0@3&9&nC408hi!iIyJZX_1ib%0Tzv| z4n&NvgwCYN8=_sDm6Vj$^M{6px-*E5i#2$S0^mDxocc1($IovPuvn_D-p#|a43Zx4 zF~5zjG;r2R1i942HcjZ>lCU=02MXI$$E#mRa8*7uZeei|>+Rh-W9i7FnXTYDTLU%D!IYAy+=gz~;VLKNTUaVjsEz=OQbua2X z`e2<8W+6k^)E?jM3H1zK^DYI3ra{rcmX;P{gtNT=`ma*NnADb4_S4~~0ORFIHBVDW z=&0+N>CKT3Jp>MgiI%AIA)D@@<~duto@Brz7G`e`IPU&@RoR9H;20qOPLRhhEtxbP z)G!hE;J_aDWyq~XXw2WP7b+2iG4(AqMlTmRqHWeDJ7QuYs2LA8a}MY2WIDynZmSPd; zYPY`T!D2leo$QrV+T&!UUWvX$QyuAf`?A{3zE;8&=@~DODE8*a?RPB<7E@7EbM*}W z_%XM$FDxv4>hLKsJ%{|lIf@+r8BHbMw0NZ3#3X73k2@SP9y$L}db!rL@FA^<-AT#3 zoD{j=z25PVkdS>o`hNjR0ClaNA!cK1d&{KuXPVvNN*e?#G9Sqio+>TwsjTI!D9WzfOo)c7h{gi zl$?*WFsbw4ge05~Z?VU$F0BcAOf*M;3k=8`C&lN*0NHZe8D0Y_p;D6~6$@KTOH?LYbL8*YRC zQIF2atwl_hl=ngk`apNmAz@f5=+~S%`nNc7ccFL+25b<(i&R)u#V72!yr5hBeR%Nf zXe}7yzcb`gsc5E^QZh33$H6QrDe2NboVJtpsh4fdl$DkBR$i=e!3_-#$_fbyZRZ0c zbEH)pFla9fI*7Xe{Bj?pvAE5q_t177;KyxYKlrq=LBJCaP)8>o5tb~k8eoOqrpAM# zAazH_7hL<4Wm{`xq*Vyoyc$>@XyT4|^}6ROO^NOEUS&qr>jmnQlIabVEY};aBvVz9(KG?e#?+5A%Jz$;3s#vNAVAdsF{H zhyJ5iL`_iAk@ZK6h)E75U~*EDlMjCGhuU7YwXwPX@Zm#8$Hg=l?1_kxo}M1a+qUC? zE1HI;El6&hW$UOo(xc*RX>O9M%4KxdK<^F%C(`0jDYh|qADm);$1)w}G&MB=`wN(7 zBje*MTLIwhIy)W$Gy5D0tdStHez+|eaO;!@3@%g%lD-N%YO5h=Yr0Y_a0{84@Pz}2 z{5&fw>-Bs0z$z*rpl)EfwV;a-Fc$Nf0q$9=w)i@evW11Bu&@JWmVb=n;)X)RP}6H< VLf$zkH9)H*QMs?7Sf&6C`yazYl0^Uj diff --git a/tests/src/test_cases/draw/test_draw_vector.c b/tests/src/test_cases/draw/test_draw_vector.c index f3f5398cad..f533ccb836 100644 --- a/tests/src/test_cases/draw/test_draw_vector.c +++ b/tests/src/test_cases/draw/test_draw_vector.c @@ -202,9 +202,9 @@ static void draw_lines(lv_layer_t * layer) static void canvas_draw(const char * name, void (*draw_cb)(lv_layer_t *)) { - static uint8_t canvas_buf[CANVAS_WIDTH_TO_STRIDE(640, 4) * 480 + LV_DRAW_BUF_ALIGN]; + static uint8_t canvas_buf[LV_CANVAS_BUF_SIZE(640, 480, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, lv_draw_buf_align(canvas_buf, LV_COLOR_FORMAT_ARGB8888), 640, 480, + lv_canvas_set_buffer(canvas, canvas_buf, 640, 480, LV_COLOR_FORMAT_ARGB8888); lv_layer_t layer;