From 6b4db6e9fc9dfb5dfacf73a8e1914edc91bb0bec Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 26 Aug 2019 05:06:49 +0200 Subject: [PATCH] mask and blend fixes --- src/lv_draw/lv_blend.c | 2 +- src/lv_draw/lv_draw_line.c | 3 +-- src/lv_draw/lv_draw_rect.c | 8 +++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/lv_draw/lv_blend.c b/src/lv_draw/lv_blend.c index 9fbf6f67a..c7295bf99 100644 --- a/src/lv_draw/lv_blend.c +++ b/src/lv_draw/lv_blend.c @@ -159,7 +159,7 @@ void lv_blend_fill(const lv_area_t * disp_area, const lv_area_t * clip_area, con if(opa_tmp > LV_OPA_MAX) last_res_color = color; else if(opa_tmp < LV_OPA_MIN) last_res_color = disp_buf_tmp[x]; else last_res_color = lv_color_mix(color, disp_buf_tmp[x],opa_tmp); - last_mask = mask[x]; + last_mask = mask_tmp[x]; last_dest_color.full = disp_buf_tmp[x].full; } disp_buf_tmp[x] = last_res_color; diff --git a/src/lv_draw/lv_draw_line.c b/src/lv_draw/lv_draw_line.c index 7d86b9999..1e0fca79a 100644 --- a/src/lv_draw/lv_draw_line.c +++ b/src/lv_draw/lv_draw_line.c @@ -93,7 +93,7 @@ static void draw_line_hor(const lv_point_t * point1, const lv_point_t * point2, draw_area.y2 = point1->y + w_half0; /*If there is no mask then simply draw a rectangle*/ - if(other_mask_cnt == 20) { + if(other_mask_cnt == 0) { lv_blend_fill(disp_area, clip, &draw_area, disp_buf, LV_IMG_CF_TRUE_COLOR, style->line.color, NULL, LV_MASK_RES_FULL_COVER, style->line.opa, LV_BLIT_MODE_NORMAL); @@ -136,7 +136,6 @@ static void draw_line_hor(const lv_point_t * point1, const lv_point_t * point2, fill_area.y2++; } } - } diff --git a/src/lv_draw/lv_draw_rect.c b/src/lv_draw/lv_draw_rect.c index ea6193237..5defd087e 100644 --- a/src/lv_draw/lv_draw_rect.c +++ b/src/lv_draw/lv_draw_rect.c @@ -95,10 +95,8 @@ static void draw_bg(const lv_area_t * coords, const lv_area_t * clip, const lv_s /*Get the real radius*/ lv_coord_t rout = style->body.radius; - if(rout == LV_RADIUS_CIRCLE) { - lv_coord_t short_side = LV_MATH_MIN(lv_area_get_width(coords), lv_area_get_height(coords)); - if(rout > short_side >> 1) rout = short_side >> 1; - } + lv_coord_t short_side = LV_MATH_MIN(lv_area_get_width(coords), lv_area_get_height(coords)); + if(rout > short_side >> 1) rout = short_side >> 1; /*Most simple case: just a plain rectangle*/ if(other_mask_cnt == 0 && rout == 0 && style->body.main_color.full == style->body.grad_color.full) { @@ -181,7 +179,7 @@ static void draw_bg(const lv_area_t * coords, const lv_area_t * clip, const lv_s area_small.y2 -= border_width; /*Create the mask*/ - lv_mask_radius_init(&mask_rsmall_param, &area_small, style->body.radius - border_width, true); + lv_mask_radius_init(&mask_rsmall_param, &area_small, rout - border_width, true); int16_t mask_rsmall_id = lv_mask_add(lv_mask_radius, &mask_rsmall_param, NULL); lv_coord_t corner_size = LV_MATH_MAX(rout, border_width);