diff options
author | Terje Gundersen <terje.gundersen@appeartv.com> | 2013-12-24 10:51:57 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2013-12-24 11:05:25 +0100 |
commit | b1e9c555235d0acf1d2efd6c1abe39b09856639f (patch) | |
tree | 4943eff76af31cb15496d2ded05c4b734097e4b9 /src/efi/graphics.c | |
parent | 30030cb9c76f8efbd4393f1323fd19fa06c0b217 (diff) |
graphics: splash - correct rounding in alpha blending
"(X >> 8)" always rounds down, but "(X + 0x80) >> 8)" rounds to
the nearest integer.
Diffstat (limited to 'src/efi/graphics.c')
-rw-r--r-- | src/efi/graphics.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/efi/graphics.c b/src/efi/graphics.c index d3f674b..062ce27 100644 --- a/src/efi/graphics.c +++ b/src/efi/graphics.c @@ -222,8 +222,8 @@ static void pixel_blend(UINT32 *dst, const UINT32 source) { dst_g = (*dst & 0x00ff00); /* blend */ - rb = ((((src_rb - dst_rb) * alpha) >> 8) + dst_rb) & 0xff00ff; - g = ((((src_g - dst_g) * alpha) >> 8) + dst_g) & 0x00ff00; + rb = ((((src_rb - dst_rb) * alpha + 0x800080) >> 8) + dst_rb) & 0xff00ff; + g = ((((src_g - dst_g) * alpha + 0x008000) >> 8) + dst_g) & 0x00ff00; *dst = (rb | g); } |