diff --git a/src/lv_draw/lv_draw_img.c b/src/lv_draw/lv_draw_img.c index 54a795d8b..6598d68a3 100644 --- a/src/lv_draw/lv_draw_img.c +++ b/src/lv_draw/lv_draw_img.c @@ -403,7 +403,12 @@ static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area, if(alpha_byte) { lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; mask_buf[px_i] = px_opa; - if(px_opa < LV_OPA_MIN) continue; + if(px_opa < LV_OPA_MIN) { +#if LV_COLOR_DEPTH == 32 + map2[px_i].ch.alpha = 0xFF; +#endif + continue; + } } else { mask_buf[px_i] = LV_OPA_COVER; } diff --git a/src/lv_draw/lv_draw_mask.c b/src/lv_draw/lv_draw_mask.c index 7b2871a5e..5d7470486 100644 --- a/src/lv_draw/lv_draw_mask.c +++ b/src/lv_draw/lv_draw_mask.c @@ -188,8 +188,8 @@ void lv_draw_mask_line_points_init(lv_draw_mask_line_param_t * param, lv_coord_t param->cfg.p1.x = p1x; param->cfg.p1.y = p1y; - param->cfg.p2.x = p1x; - param->cfg.p2.y = p1y; + param->cfg.p2.x = p2x; + param->cfg.p2.y = p2y; param->cfg.side = side; param->origo.x = p1x; diff --git a/src/lv_draw/lv_img_decoder.c b/src/lv_draw/lv_img_decoder.c index 84cbea57b..debf3b31e 100644 --- a/src/lv_draw/lv_img_decoder.c +++ b/src/lv_draw/lv_img_decoder.c @@ -643,10 +643,9 @@ static lv_res_t lv_img_decoder_built_in_line_alpha(lv_img_decoder_dsc_t * dsc, l #endif } - uint8_t byte_act = 0; uint8_t val_act; for(i = 0; i < len; i++) { - val_act = (data_tmp[byte_act] & (mask << pos)) >> pos; + val_act = (*data_tmp & (mask << pos)) >> pos; buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act];