diff --git a/src/draw/sw/lv_draw_sw_mask.c b/src/draw/sw/lv_draw_sw_mask.c index 74c0869f6..d9152d5c4 100644 --- a/src/draw/sw/lv_draw_sw_mask.c +++ b/src/draw/sw/lv_draw_sw_mask.c @@ -451,7 +451,7 @@ LV_ATTRIBUTE_FAST_MEM static lv_draw_sw_mask_res_t lv_draw_mask_line(lv_opa_t * /*Non sense: Can't be on the right/left of a horizontal line*/ if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_LEFT || p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_SW_MASK_RES_FULL_COVER; - else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_SW_MASK_RES_FULL_COVER; + else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_TOP && abs_y < 0) return LV_DRAW_SW_MASK_RES_FULL_COVER; else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_SW_MASK_RES_FULL_COVER; else { return LV_DRAW_SW_MASK_RES_TRANSP; diff --git a/src/draw/sw/lv_draw_sw_triangle.c b/src/draw/sw/lv_draw_sw_triangle.c index f2b1eaec8..311325b3d 100644 --- a/src/draw/sw/lv_draw_sw_triangle.c +++ b/src/draw/sw/lv_draw_sw_triangle.c @@ -104,9 +104,15 @@ void lv_draw_sw_triangle(lv_draw_unit_t * draw_unit, const lv_draw_triangle_dsc_ p[2].x, p[2].y, right ? LV_DRAW_SW_MASK_LINE_SIDE_LEFT : LV_DRAW_SW_MASK_LINE_SIDE_RIGHT); - lv_draw_sw_mask_line_points_init(&mask_bottom, p[1].x, p[1].y, - p[2].x, p[2].y, - right ? LV_DRAW_SW_MASK_LINE_SIDE_LEFT : LV_DRAW_SW_MASK_LINE_SIDE_RIGHT); + if(p[1].y == p[2].y) { + lv_draw_sw_mask_line_points_init(&mask_bottom, p[1].x, p[1].y, + p[2].x, p[2].y, LV_DRAW_SW_MASK_LINE_SIDE_TOP); + } + else { + lv_draw_sw_mask_line_points_init(&mask_bottom, p[1].x, p[1].y, + p[2].x, p[2].y, + right ? LV_DRAW_SW_MASK_LINE_SIDE_LEFT : LV_DRAW_SW_MASK_LINE_SIDE_RIGHT); + } masks[0] = &mask_left; masks[1] = &mask_right; diff --git a/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_128.png b/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_128.png index 4aeeb5580..818ce909d 100644 Binary files a/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_128.png and b/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_255.png b/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_255.png index c4c942745..116d0d158 100644 Binary files a/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_255.png and b/tests/ref_imgs/draw/render/argb8888/demo_render_triangle_opa_255.png differ diff --git a/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_128.png b/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_128.png index 372bdc3ec..b431f8014 100644 Binary files a/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_128.png and b/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_255.png b/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_255.png index 507032474..de2a3b2cb 100644 Binary files a/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_255.png and b/tests/ref_imgs/draw/render/rgb565/demo_render_triangle_opa_255.png differ diff --git a/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_128.png b/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_128.png index 95f7fc463..f5ed95738 100644 Binary files a/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_128.png and b/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_255.png b/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_255.png index fdc86a070..1ec312688 100644 Binary files a/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_255.png and b/tests/ref_imgs/draw/render/rgb888/demo_render_triangle_opa_255.png differ diff --git a/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_128.png b/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_128.png index 95f7fc463..f5ed95738 100644 Binary files a/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_128.png and b/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_255.png b/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_255.png index fdc86a070..1ec312688 100644 Binary files a/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_255.png and b/tests/ref_imgs/draw/render/xrgb8888/demo_render_triangle_opa_255.png differ