From fa6e49df5b5a720ee1b671cc5ac2aae2e1c8dfe2 Mon Sep 17 00:00:00 2001 From: guoweilkd Date: Fri, 12 Nov 2021 19:24:26 +0800 Subject: [PATCH] fix(draw_label): radius Mask doesn't work in Specific condition (#2784) --- src/draw/lv_draw_label.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/draw/lv_draw_label.c b/src/draw/lv_draw_label.c index 3ae4f0e5b..0bbf0c4e0 100644 --- a/src/draw/lv_draw_label.c +++ b/src/draw/lv_draw_label.c @@ -549,7 +549,10 @@ LV_ATTRIBUTE_FAST_MEM static void draw_letter_normal(lv_coord_t pos_x, lv_coord_ fill_area.y1 = row_start + pos_y; fill_area.y2 = fill_area.y1; #if LV_DRAW_COMPLEX - bool mask_any = lv_draw_mask_is_any(&fill_area); + lv_area_t mask_area; + lv_area_copy(&mask_area, &fill_area); + mask_area.y2 = mask_area.y1 + row_end; + bool mask_any = lv_draw_mask_is_any(&mask_area); #endif uint32_t col_bit_max = 8 - bpp; @@ -705,6 +708,9 @@ static void draw_letter_subpx(lv_coord_t pos_x, lv_coord_t pos_y, lv_font_glyph_ /*If the letter is partially out of mask the move there on draw_buf*/ disp_buf_buf_tmp += (row_start * disp_buf_width) + col_start / 3; + lv_area_t mask_area; + lv_area_copy(&mask_area, &map_area); + mask_area.y2 = mask_area.y1 + row_end; bool mask_any = lv_draw_mask_is_any(&map_area); uint8_t font_rgb[3];