From e6d45930ce2cbb1e044076d07442b0d998fe3347 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 23 Nov 2021 15:19:50 +0900 Subject: [PATCH] sw_engine image: apply rgba blending. rgba requires the default blending. --- src/lib/sw_engine/tvgSwRaster.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/sw_engine/tvgSwRaster.cpp b/src/lib/sw_engine/tvgSwRaster.cpp index 4087956..5f053d8 100644 --- a/src/lib/sw_engine/tvgSwRaster.cpp +++ b/src/lib/sw_engine/tvgSwRaster.cpp @@ -662,7 +662,7 @@ static bool _rasterDirectRleRGBAImage(SwSurface* surface, const SwImage* image) auto img = image->data + (span->y + image->oy) * image->stride + (span->x + image->ox); if (span->coverage == 255) { for (uint32_t x = 0; x < span->len; ++x, ++dst, ++img) { - *dst = *img; + *dst = *img + ALPHA_BLEND(*dst, surface->blender.ialpha(*img)); } } else { for (uint32_t x = 0; x < span->len; ++x, ++dst, ++img) { @@ -911,7 +911,8 @@ static bool _rasterTransformedRGBAImage(SwSurface* surface, const SwImage* image auto rX = static_cast(roundf(x * itransform->e11 + ey1)); auto rY = static_cast(roundf(x * itransform->e21 + ey2)); if (rX >= w || rY >= h) continue; - *dst = img[rX + (rY * image->stride)]; + auto src = img[rX + (rY * image->stride)]; + *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src)); } } return true; @@ -935,7 +936,7 @@ static bool _rasterDownScaledRGBAImage(SwSurface* surface, const SwImage* image, uint32_t src; if (rX < halfScale || rY < halfScale || rX >= w - halfScale || rY >= h - halfScale) src = img[rX + (rY * w)]; else src = _interpDownScaler(img, w, h, rX, rY, halfScale); - *dst = src; + *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src)); } } return true; @@ -961,7 +962,7 @@ static bool _rasterUpScaledRGBAImage(SwSurface* surface, const SwImage* image, c uint32_t src; if (rX == w - 1 || rY == h - 1) src = img[rX + (rY * w)]; else src = _interpUpScaler(img, w, h, fX, fY); - *dst = src; + *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src)); } } return true; -- 2.7.4