diff options
author | smatz <smatz@openttd.org> | 2008-06-26 16:47:29 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-06-26 16:47:29 +0000 |
commit | 7ec2ad621dbd5193c126d6097e4624cf0610abcf (patch) | |
tree | b62f60a01958578c40c352edb5be1e0f608303bc /src/blitter/32bpp_optimized.cpp | |
parent | faebe10d812ac6af644d08128021d39ef06370fd (diff) | |
download | openttd-7ec2ad621dbd5193c126d6097e4624cf0610abcf.tar.xz |
(svn r13640) -Codechange: make colours behind not fully solid objects less darker for BM_TRANSPARENT (for 32bpp blitters)
Diffstat (limited to 'src/blitter/32bpp_optimized.cpp')
-rw-r--r-- | src/blitter/32bpp_optimized.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index 6a6ad6542..717701bce 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -142,13 +142,20 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL * we produce a result the newgrf maker didn't expect ;) */ /* Make the current color a bit more black, so it looks like this image is transparent */ - src_px += n; src_n += n; - - do { - *dst = MakeTransparent(*dst, 192); - dst++; - } while (--n != 0); + if (src_px->a == 255) { + src_px += n; + do { + *dst = MakeTransparent(*dst, 3, 4); + dst++; + } while (--n != 0); + } else { + do { + *dst = MakeTransparent(*dst, (256 * 4 - src_px->a), 256 * 4); + dst++; + src_px++; + } while (--n != 0); + } break; default: |