From 197bc46d61a9f1a5df7445462af6c8463c0f217e Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Thu, 6 Feb 2020 00:58:56 +0100 Subject: [PATCH] shadow draw fix when he left corners are partially clipped --- src/lv_draw/lv_draw_rect.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/lv_draw/lv_draw_rect.c b/src/lv_draw/lv_draw_rect.c index b784bf774..2ddbb0979 100644 --- a/src/lv_draw/lv_draw_rect.c +++ b/src/lv_draw/lv_draw_rect.c @@ -720,8 +720,8 @@ static void draw_shadow(const lv_area_t * coords, const lv_area_t * clip, lv_dra } first_px = 0; - if(disp_area->x1 >= a.x1) { - first_px = disp_area->x1 - a.x1; + if(clip->x1 >= a.x1) { + first_px = clip->x1 - a.x1; a.x1 += first_px; } @@ -908,8 +908,6 @@ static void shadow_draw_corner_buf(const lv_area_t * coords, uint16_t * sh_buf, #if SHADOW_ENHANCE /*Set half shadow width width because blur will be repeated*/ if(sw_ori == 1) sw = 1; - else if(sw_ori == 2) sw = 2; - else if(sw_ori == 3) sw = 2; else sw = sw_ori >> 1; #endif @@ -954,7 +952,7 @@ static void shadow_draw_corner_buf(const lv_area_t * coords, uint16_t * sh_buf, res_buf[x] = sh_buf[x]; } #else - sw = sw_ori - sw; + sw += sw_ori & 1; if(sw > 1) { uint32_t i; sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw;