libimg: transparency fixes.

img.convert doesn't make opaque pixels transparent.
gif decoder considers palette pixels opaque.

git-svn-id: svn://kolibrios.org@8394 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Ivan Baravy 2020-12-13 17:22:19 +00:00
parent 751768c3c2
commit 201cf02d85
2 changed files with 5 additions and 3 deletions

View File

@ -173,7 +173,7 @@ proc img._.convert.bpp8g_to_bpp1 _src, _dst
mov eax, [_dst]
mov eax, [eax + Image.Palette]
mov dword[eax], 0x00000000
mov dword[eax + 4], 0x00ffffff
mov dword[eax + 4], 0xffffffff
mov edx, [ebx + Image.Height]
.bpp8g_to_bpp1.line:
mov ax, 0x0800
@ -261,6 +261,7 @@ proc img._.convert.bpp24_to_bpp32 _src, _dst
lodsw
ror eax, 16
lodsb
mov ah, 0xff ; opaque
rol eax, 16
stosd
dec ecx
@ -584,7 +585,7 @@ proc img._.convert.bpp8a_to_bpp1 _src, _dst
mov eax, [_dst]
mov eax, [eax + Image.Palette]
mov dword[eax], 0x00000000
mov dword[eax + 4], 0x00ffffff
mov dword[eax + 4], 0xffffffff
mov edx, [ebx + Image.Height]
.bpp8a_to_bpp1.line:
mov ax, 0x0800

View File

@ -273,7 +273,8 @@ img.decode.gif.cur_color_table_size_child equ ebp + 4 + 4 + 4*3 + 4
lodsd
dec esi
bswap eax
shr eax, 8
mov al, 0xff ; opaque
ror eax, 8
stosd
loop @b
add ebx, sizeof.gif.ImageDescriptor