From 5e17fe0034891c4033c31df7a346de62b33cf508 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 2 Jul 2025 16:30:14 +0900 Subject: [PATCH] sw_engine: ++clean code --- src/renderer/sw_engine/tvgSwRaster.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/renderer/sw_engine/tvgSwRaster.cpp b/src/renderer/sw_engine/tvgSwRaster.cpp index 206710ea..4f6972d1 100644 --- a/src/renderer/sw_engine/tvgSwRaster.cpp +++ b/src/renderer/sw_engine/tvgSwRaster.cpp @@ -1531,15 +1531,12 @@ bool rasterClear(SwSurface* surface, uint32_t x, uint32_t y, uint32_t w, uint32_ uint32_t rasterUnpremultiply(uint32_t data) { - uint8_t a = data >> 24; + auto a = A(data); if (a == 255 || a == 0) return data; - uint16_t r = ((data >> 8) & 0xff00) / a; - uint16_t g = ((data) & 0xff00) / a; - uint16_t b = ((data << 8) & 0xff00) / a; - if (r > 0xff) r = 0xff; - if (g > 0xff) g = 0xff; - if (b > 0xff) b = 0xff; - return (a << 24) | (r << 16) | (g << 8) | (b); + auto r = C1(data) * 255 / a; + auto g = C2(data) * 255 / a; + auto b = C3(data) * 255 / a; + return JOIN(a, r, g, b); }