diff --git a/src/draw/sw/blend/lv_draw_sw_blend.c b/src/draw/sw/blend/lv_draw_sw_blend.c index b116e4b85..1bd642402 100644 --- a/src/draw/sw/blend/lv_draw_sw_blend.c +++ b/src/draw/sw/blend/lv_draw_sw_blend.c @@ -96,12 +96,12 @@ void lv_draw_sw_blend(lv_draw_unit_t * draw_unit, const lv_draw_sw_blend_dsc_t * image_dsc.opa = blend_dsc->opa; image_dsc.blend_mode = blend_dsc->blend_mode; - image_dsc.src_stride = blend_dsc->src_stride / lv_color_format_get_size(blend_dsc->src_color_format); + image_dsc.src_stride = blend_dsc->src_stride; image_dsc.src_color_format = blend_dsc->src_color_format; const uint8_t * src_buf = blend_dsc->src_buf; uint32_t src_px_size = lv_color_format_get_size(blend_dsc->src_color_format); - src_buf += image_dsc.src_stride * (blend_area.y1 - blend_dsc->src_area->y1) * src_px_size; + src_buf += image_dsc.src_stride * (blend_area.y1 - blend_dsc->src_area->y1); src_buf += (blend_area.x1 - blend_dsc->src_area->x1) * src_px_size; image_dsc.src_buf = src_buf; diff --git a/src/draw/sw/blend/lv_draw_sw_blend_to_argb8888.c b/src/draw/sw/blend/lv_draw_sw_blend_to_argb8888.c index 8b4c5e073..348fc5c0d 100644 --- a/src/draw/sw/blend/lv_draw_sw_blend_to_argb8888.c +++ b/src/draw/sw/blend/lv_draw_sw_blend_to_argb8888.c @@ -183,7 +183,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc lv_color32_t * dest_buf_c32 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 4; const lv_color16_t * src_buf_c16 = (const lv_color16_t *) dsc->src_buf; - int32_t src_stride = dsc->src_stride; + int32_t src_stride_px = dsc->src_stride / 2; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -205,7 +205,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c16 += src_stride; + src_buf_c16 += src_stride_px; } } else if(mask_buf && opa >= LV_OPA_MAX) { @@ -218,7 +218,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c16 += src_stride; + src_buf_c16 += src_stride_px; mask_buf += mask_stride; } } @@ -232,7 +232,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c16 += src_stride; + src_buf_c16 += src_stride_px; mask_buf += mask_stride; } } @@ -250,7 +250,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc } if(mask_buf) mask_buf += mask_stride; dest_buf_c32 += dest_stride_px; - src_buf_c16 += src_stride; + src_buf_c16 += src_stride_px; } } } @@ -264,7 +264,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb888_image_blend(_lv_draw_sw_blend_image_dsc lv_color32_t * dest_buf_c32 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 4; const uint8_t * src_buf = dsc->src_buf; - int32_t src_stride = dsc->src_stride * src_px_size; + int32_t src_stride = dsc->src_stride; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -369,7 +369,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d lv_color32_t * dest_buf_c32 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 4; const lv_color32_t * src_buf_c32 = dsc->src_buf; - int32_t src_stride = dsc->src_stride; + int32_t src_stride_px = dsc->src_stride / 4; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -387,7 +387,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d dest_buf_c32[x] = lv_color_32_32_mix(src_buf_c32[x], dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c32 += src_stride; + src_buf_c32 += src_stride_px; } } else if(mask_buf == NULL && opa < LV_OPA_MAX) { @@ -398,7 +398,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c32 += src_stride; + src_buf_c32 += src_stride_px; } } else if(mask_buf && opa >= LV_OPA_MAX) { @@ -409,7 +409,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c32 += src_stride; + src_buf_c32 += src_stride_px; mask_buf += mask_stride; } } @@ -421,7 +421,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d dest_buf_c32[x] = lv_color_32_32_mix(color_argb, dest_buf_c32[x], &cache); } dest_buf_c32 += dest_stride_px; - src_buf_c32 += src_stride; + src_buf_c32 += src_stride_px; mask_buf += mask_stride; } } @@ -436,7 +436,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d } if(mask_buf) mask_buf += mask_stride; dest_buf_c32 += dest_stride_px; - src_buf_c32 += src_stride; + src_buf_c32 += src_stride_px; } } } diff --git a/src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c b/src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c index a5684b1d1..a0571b260 100644 --- a/src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c +++ b/src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c @@ -233,7 +233,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc uint16_t * dest_buf_u16 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 2; const uint16_t * src_buf_u16 = dsc->src_buf; - int32_t src_stride = dsc->src_stride; + int32_t src_stride_px = dsc->src_stride / 2; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -246,7 +246,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc for(y = 0; y < h; y++) { lv_memcpy(dest_buf_u16, src_buf_u16, line_in_bytes); dest_buf_u16 += dest_stride_px; - src_buf_u16 += src_stride; + src_buf_u16 += src_stride_px; } } else if(mask_buf == NULL && opa < LV_OPA_MAX) { @@ -255,7 +255,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_u16[x] = lv_color_16_16_mix(src_buf_u16[x], dest_buf_u16[x], opa); } dest_buf_u16 += dest_stride_px; - src_buf_u16 += src_stride; + src_buf_u16 += src_stride_px; } } else if(mask_buf && opa >= LV_OPA_MAX) { @@ -264,7 +264,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_u16[x] = lv_color_16_16_mix(src_buf_u16[x], dest_buf_u16[x], mask_buf[x]); } dest_buf_u16 += dest_stride_px; - src_buf_u16 += src_stride; + src_buf_u16 += src_stride_px; mask_buf += mask_stride; } } @@ -274,7 +274,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc dest_buf_u16[x] = lv_color_16_16_mix(src_buf_u16[x], dest_buf_u16[x], LV_OPA_MIX2(mask_buf[x], opa)); } dest_buf_u16 += dest_stride_px; - src_buf_u16 += src_stride; + src_buf_u16 += src_stride_px; mask_buf += mask_stride; } } @@ -319,7 +319,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc } dest_buf_u16 += dest_stride_px; - src_buf_u16 += src_stride; + src_buf_u16 += src_stride_px; if(mask_buf) mask_buf += mask_stride; } } @@ -333,7 +333,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb888_image_blend(_lv_draw_sw_blend_image_dsc uint16_t * dest_buf_u16 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 2; const uint8_t * src_buf_u8 = dsc->src_buf; - int32_t src_stride = dsc->src_stride * src_px_size; + int32_t src_stride = dsc->src_stride; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -434,7 +434,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d uint16_t * dest_buf_u16 = dsc->dest_buf; int32_t dest_stride_px = dsc->dest_stride / 2; const uint8_t * src_buf_u8 = dsc->src_buf; - int32_t src_stride = dsc->src_stride * 4; + int32_t src_stride = dsc->src_stride; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; diff --git a/src/draw/sw/blend/lv_draw_sw_blend_to_rgb888.c b/src/draw/sw/blend/lv_draw_sw_blend_to_rgb888.c index b4c5e4633..d25ba333e 100644 --- a/src/draw/sw/blend/lv_draw_sw_blend_to_rgb888.c +++ b/src/draw/sw/blend/lv_draw_sw_blend_to_rgb888.c @@ -225,7 +225,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb565_image_blend(_lv_draw_sw_blend_image_dsc uint8_t * dest_buf_u8 = dsc->dest_buf; int32_t dest_stride = dsc->dest_stride; const lv_color16_t * src_buf_c16 = (const lv_color16_t *) dsc->src_buf; - int32_t src_stride = dsc->src_stride; + int32_t src_stride = dsc->src_stride / 2; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -314,7 +314,7 @@ LV_ATTRIBUTE_FAST_MEM static void rgb888_image_blend(_lv_draw_sw_blend_image_dsc uint8_t * dest_buf = dsc->dest_buf; int32_t dest_stride = dsc->dest_stride; const uint8_t * src_buf = dsc->src_buf; - int32_t src_stride = dsc->src_stride * src_px_size; + int32_t src_stride = dsc->src_stride; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride; @@ -403,7 +403,7 @@ LV_ATTRIBUTE_FAST_MEM static void argb8888_image_blend(_lv_draw_sw_blend_image_d uint8_t * dest_buf = dsc->dest_buf; int32_t dest_stride = dsc->dest_stride; const lv_color32_t * src_buf_c32 = dsc->src_buf; - int32_t src_stride = dsc->src_stride; + int32_t src_stride = dsc->src_stride / 4; const lv_opa_t * mask_buf = dsc->mask_buf; int32_t mask_stride = dsc->mask_stride;