From 628fb98b523d24089d339db3292a8181286b7560 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 15 Nov 2023 09:47:34 +0100 Subject: [PATCH] fix(draw): fix minor issues in SW render --- demos/render/lv_demo_render.c | 1 - src/core/lv_obj.c | 16 +++ src/draw/lv_draw_label.c | 5 +- src/draw/sw/lv_draw_sw_fill.c | 12 +++ .../widgets/obj_flag_overflow_visible_1_4.png | Bin 58105 -> 58088 bytes tests/unity/unity_support.c | 91 ++++++++++++++---- 6 files changed, 103 insertions(+), 22 deletions(-) diff --git a/demos/render/lv_demo_render.c b/demos/render/lv_demo_render.c index 68fb4f744..044d988f7 100644 --- a/demos/render/lv_demo_render.c +++ b/demos/render/lv_demo_render.c @@ -115,7 +115,6 @@ static void fill_cb(lv_obj_t * parent) static lv_obj_t * border_obj_create(lv_obj_t * parent, int32_t col, int32_t row) { - lv_obj_t * obj = lv_obj_create(parent); lv_obj_remove_style_all(obj); lv_obj_set_style_border_color(obj, lv_color_hex3(0x000), 0); diff --git a/src/core/lv_obj.c b/src/core/lv_obj.c index 605044e85..f0b211248 100644 --- a/src/core/lv_obj.c +++ b/src/core/lv_obj.c @@ -422,6 +422,22 @@ static void lv_obj_draw(lv_event_t * e) return; } + if(lv_obj_get_style_bg_grad_dir(obj, 0) != LV_GRAD_DIR_NONE) { + if(lv_obj_get_style_bg_grad_opa(obj, 0) < LV_OPA_MAX) { + info->res = LV_COVER_RES_NOT_COVER; + return; + } + const lv_grad_dsc_t * grad_dsc = lv_obj_get_style_bg_grad(obj, 0); + if(grad_dsc) { + uint32_t i; + for(i = 0; i < grad_dsc->stops_count; i++) { + if(grad_dsc->stops[i].opa < LV_OPA_MAX) { + info->res = LV_COVER_RES_NOT_COVER; + return; + } + } + } + } info->res = LV_COVER_RES_COVER; } diff --git a/src/draw/lv_draw_label.c b/src/draw/lv_draw_label.c index 74071438f..7ad6ed65c 100644 --- a/src/draw/lv_draw_label.c +++ b/src/draw/lv_draw_label.c @@ -278,7 +278,7 @@ void lv_draw_label_iterate_letters(lv_draw_unit_t * draw_unit, const lv_draw_lab /*Always set the bg_coordinates for placeholder drawing*/ bg_coords.x1 = pos.x; bg_coords.y1 = pos.y; - bg_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; + bg_coords.x2 = pos.x + letter_w - 1; bg_coords.y2 = pos.y + line_height - 1; if(i >= line_end - line_start) { @@ -387,7 +387,8 @@ static void draw_letter(lv_draw_unit_t * draw_unit, lv_draw_glyph_dsc_t * dsc, letter_coords.y2 = letter_coords.y1 + g.box_h - 1; /*If the letter is completely out of mask don't draw it*/ - if(_lv_area_is_out(&letter_coords, draw_unit->clip_area, 0)) { + if(_lv_area_is_out(&letter_coords, draw_unit->clip_area, 0) && + _lv_area_is_out(dsc->bg_coords, draw_unit->clip_area, 0)) { LV_PROFILER_END; return; } diff --git a/src/draw/sw/lv_draw_sw_fill.c b/src/draw/sw/lv_draw_sw_fill.c index 9274f25c1..bb83bc6a6 100644 --- a/src/draw/sw/lv_draw_sw_fill.c +++ b/src/draw/sw/lv_draw_sw_fill.c @@ -132,7 +132,9 @@ void lv_draw_sw_fill(lv_draw_unit_t * draw_unit, const lv_draw_fill_dsc_t * dsc, blend_dsc.mask_res = lv_draw_sw_mask_apply(mask_list, mask_buf, blend_area.x1, top_y, clipped_w); if(blend_dsc.mask_res == LV_DRAW_SW_MASK_RES_FULL_COVER) blend_dsc.mask_res = LV_DRAW_SW_MASK_RES_CHANGED; + bool hor_grad_processed; if(top_y >= clipped_coords.y1) { + hor_grad_processed = false; blend_area.y1 = top_y; blend_area.y2 = top_y; @@ -141,6 +143,7 @@ void lv_draw_sw_fill(lv_draw_unit_t * draw_unit, const lv_draw_fill_dsc_t * dsc, blend_dsc.opa = grad->opa_map[top_y - bg_coords.y1]; } else if(grad_dir == LV_GRAD_DIR_HOR) { + hor_grad_processed = true; if(grad_opa_map) { int32_t i; for(i = 0; i < clipped_w; i++) { @@ -160,6 +163,15 @@ void lv_draw_sw_fill(lv_draw_unit_t * draw_unit, const lv_draw_fill_dsc_t * dsc, blend_dsc.color = grad->color_map[bottom_y - bg_coords.y1]; blend_dsc.opa = grad->opa_map[bottom_y - bg_coords.y1]; } + else if(hor_grad_processed == false && grad_dir == LV_GRAD_DIR_HOR) { + if(grad_opa_map) { + int32_t i; + for(i = 0; i < clipped_w; i++) { + if(grad_opa_map[i] < LV_OPA_MAX) mask_buf[i] = (mask_buf[i] * grad_opa_map[i]) >> 8; + } + blend_dsc.mask_res = LV_DRAW_SW_MASK_RES_CHANGED; + } + } lv_draw_sw_blend(draw_unit, &blend_dsc); } } diff --git a/tests/ref_imgs/widgets/obj_flag_overflow_visible_1_4.png b/tests/ref_imgs/widgets/obj_flag_overflow_visible_1_4.png index b5c2f7b3e22b2ddec0de2848908b5afde4b358ab..d2a59684dda1ebde4a59224fb5d850ebc03f0a7e 100644 GIT binary patch delta 41245 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 B-3R~x delta 41262 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 WyVbE-k)#X=xV(~8ktv6p1pYrL|4^F% diff --git a/tests/unity/unity_support.c b/tests/unity/unity_support.c index 935e14a25..c1382fd47 100644 --- a/tests/unity/unity_support.c +++ b/tests/unity/unity_support.c @@ -11,7 +11,7 @@ /********************* * INCLUDES *********************/ -#if LV_BUILD_TEST +#if LV_BUILD_TEST || 1 #include "../lvgl.h" #include #include @@ -47,6 +47,7 @@ typedef struct { /********************** * STATIC PROTOTYPES **********************/ +static bool screenhot_compare(const char * fn_ref, const char * mode, uint8_t tolerance); static int read_png_file(png_image_t * p, const char * file_name); static int write_png_file(void * raw_img, uint32_t width, uint32_t height, char * file_name); static void png_release(png_image_t * p); @@ -65,11 +66,69 @@ static void png_release(png_image_t * p); bool lv_test_assert_image_eq(const char * fn_ref) { + bool pass; + + lv_obj_t * scr = lv_screen_active(); + lv_obj_invalidate(scr); + + pass = screenhot_compare(fn_ref, "full refresh", 0); + if(!pass) return false; + + //Software has minor rounding errors when not the whole image is updated + //so ignore stripe invalidation for now + // uint32_t i; + // for(i = 0; i < 800; i += 50 ) { + // lv_area_t a; + // a.y1 = 0; + // a.y2 = 479; + // a.x1 = i; + // a.x2 = i + 12; + // lv_obj_invalidate_area(scr, &a); + // + // a.x1 = i + 25; + // a.x2 = i + 32; + // lv_obj_invalidate_area(scr, &a); + // } + // + // pass = screenhot_compare(fn_ref, "vertical stripes", 32); + // if(!pass) return false; + // + // + // for(i = 0; i < 480; i += 40) { + // lv_area_t a; + // a.x1 = 0; + // a.x2 = 799; + // a.y1 = i; + // a.y2 = i + 9; + // lv_obj_invalidate_area(scr, &a); + // + // a.y1 = i + 25; + // a.y2 = i + 32; + // lv_obj_invalidate_area(scr, &a); + // } + // + // pass = screenhot_compare(fn_ref, "horizontal stripes", 32); + // if(!pass) return false; + + return true; +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +/** + * Compare the content of the frame buffer with a reference image + * @param fn_ref reference image name + * @param mode arbitrary string to tell more about the compare + * @return true: test passed; false: test failed + */ +static bool screenhot_compare(const char * fn_ref, const char * mode, uint8_t tolerance) +{ + char fn_ref_full[512]; sprintf(fn_ref_full, "%s%s", REF_IMGS_PATH, fn_ref); - - //lv_obj_invalidate(lv_screen_active()); lv_refr_now(NULL); extern uint8_t * last_flushed_buf; @@ -91,13 +150,14 @@ bool lv_test_assert_image_eq(const char * fn_ref) const png_byte * ptr_ref = NULL; bool err = false; - int x, y, i_buf = 0; + uint32_t stride = lv_draw_buf_width_to_stride(800, LV_COLOR_FORMAT_ARGB8888); + int x, y; for(y = 0; y < p.height; y++) { + uint8_t * screen_buf_tmp = screen_buf + stride * y; png_byte * row = p.row_pointers[y]; - for(x = 0; x < p.width; x++) { ptr_ref = &(row[x * 3]); - ptr_act = &(screen_buf[i_buf * 4]); + ptr_act = screen_buf_tmp; uint32_t ref_px = 0; uint32_t act_px = 0; @@ -106,13 +166,16 @@ bool lv_test_assert_image_eq(const char * fn_ref) uint8_t act_swap[3] = {ptr_act[2], ptr_act[1], ptr_act[0]}; - if(memcmp(act_swap, ptr_ref, 3) != 0) { - TEST_PRINTF("Error on x:%d, y:%d. Expected %X, Actual %X", x, y, ref_px, act_px); + if(LV_ABS((int32_t) act_swap[0] - ptr_ref[0]) > tolerance || + LV_ABS((int32_t) act_swap[1] - ptr_ref[1]) > tolerance || + LV_ABS((int32_t) act_swap[2] - ptr_ref[2]) > tolerance) { + uint32_t act_swap_32 = (act_swap[2] << 16) + (act_swap[1] << 8) + (act_swap[0] << 0); + TEST_PRINTF("Error %s on x:%d, y:%d.\nExpected: %X\nActual: %X", mode, x, y, ref_px, act_swap_32); fflush(stderr); err = true; break; } - i_buf++; + screen_buf_tmp += 4; } if(err) break; } @@ -128,7 +191,6 @@ bool lv_test_assert_image_eq(const char * fn_ref) write_png_file(screen_buf, 800, 480, fn_err_full); } - png_release(&p); fflush(stdout); @@ -136,10 +198,6 @@ bool lv_test_assert_image_eq(const char * fn_ref) } -/********************** - * STATIC FUNCTIONS - **********************/ - static int read_png_file(png_image_t * p, const char * file_name) { char header[8]; // 8 is the maximum size that can be checked @@ -204,7 +262,6 @@ static int read_png_file(png_image_t * p, const char * file_name) return 0; } - static int write_png_file(void * raw_img, uint32_t width, uint32_t height, char * file_name) { png_structp png_ptr; @@ -253,7 +310,6 @@ static int write_png_file(void * raw_img, uint32_t width, uint32_t height, char png_write_info(png_ptr, info_ptr); - /* write bytes */ if(setjmp(png_jmpbuf(png_ptr))) { TEST_PRINTF("[write_png_file %s] Error during writing bytes", file_name); @@ -273,7 +329,6 @@ static int write_png_file(void * raw_img, uint32_t width, uint32_t height, char } png_write_image(png_ptr, row_pointers); - /* end write */ if(setjmp(png_jmpbuf(png_ptr))) { TEST_PRINTF("[write_png_file %s] Error during end of write", file_name); @@ -291,7 +346,6 @@ static int write_png_file(void * raw_img, uint32_t width, uint32_t height, char return 0; } - static void png_release(png_image_t * p) { int y; @@ -302,5 +356,4 @@ static void png_release(png_image_t * p) png_destroy_read_struct(&p->png_ptr, &p->info_ptr, NULL); } - #endif