Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2732 → Rev 2733

/programs/develop/libraries/libs-dev/libimg/bmp/bmp.asm
104,7 → 104,7
jnz .error
; convert images with <= 8 bpp to 8bpp, other - to 32 bpp
.normal:
m2m eax, Image.bpp8
m2m eax, Image.bpp8i
cmp byte [ebx + 14], 8 ; bit count
jbe @f
mov al, Image.bpp32
124,7 → 124,7
pushd [ebx + 4] ;[ebx + bmp.InfoHeader.Width]
jmp .create
.old1:
m2m eax, Image.bpp8
m2m eax, Image.bpp8i
cmp byte [ebx + 10], 8 ; bit count
jbe @f
mov al, Image.bpp32
/programs/develop/libraries/libs-dev/libimg/gif/gif.asm
209,7 → 209,7
xor ecx, ecx
@@:
push eax
mov [eax + Image.Type], Image.bpp8
mov [eax + Image.Type], Image.bpp8i
 
add ecx, sizeof.gif.Image
invoke mem.alloc, ecx
306,7 → 306,7
jnz .noprevdata
push 1
pop eax
cmp [edx + Image.Type], Image.bpp8
cmp [edx + Image.Type], Image.bpp8i
jz @f
mov al, 3
@@:
1259,7 → 1259,7
; don't dispose - set prev_img and related vars to current image
mov eax, [edx + Image.Data]
mov [prev_img_data], eax
cmp [edx + Image.Type], Image.bpp8
cmp [edx + Image.Type], Image.bpp8i
jnz @f
mov eax, [max_color]
inc eax
/programs/develop/libraries/libs-dev/libimg/ico_cur/ico_cur.asm
205,7 → 205,7
mov ebx, [eax + Image.Height]
mov ecx, [eax + Image.Width]
; for now, BMP code produces only 8 and 32 bpp images
cmp [eax + Image.Type], Image.bpp8
cmp [eax + Image.Type], Image.bpp8i
jz .bpp8
.bpp32:
mov edx, [esp+16] ; get background color
/programs/develop/libraries/libs-dev/libimg/jpeg/jpeg.asm
473,8 → 473,8
jnz .end2
; image type: 8 bpp for grayscale JPEGs, 24 bpp for normal,
; 32 bpp for Adobe YCCK
push Image.bpp8
pop eax ; Image.bpp8 = 1
push Image.bpp8i
pop eax ; Image.bpp8i = 1
cmp edi, eax
jz @f
inc eax ; Image.bpp24 = 2
/programs/develop/libraries/libs-dev/libimg/libimg.asm
228,13 → 228,13
jmp dword [.handlers + (eax-1)*4]
 
align 16
.bpp8:
; 8 BPP -> 24 BPP
.bpp8i:
; 8 BPP WITH PALETTE -> 24 BPP
push ebx
mov ebx, [esi + Image.Palette]
mov esi, [esi + Image.Data]
sub ecx, 1
jz .bpp8.last
jz .bpp8i.last
@@:
movzx eax, byte [esi]
add esi, 1
243,7 → 243,7
add edi, 3
sub ecx, 1
jnz @b
.bpp8.last:
.bpp8i.last:
movzx eax, byte [esi]
mov eax, [ebx + eax*4]
mov [edi], ax
252,6 → 252,32
pop ebx
ret
 
align 16
.bpp8g:
; 8 BPP GRAYSCALE -> 24 BPP
mov esi, [esi + Image.Data]
@@:
lodsb
mov ah, al
stosb
stosw
dec ecx
jnz @b
ret
;
;align 16
;.bpp8a: ; considered application layer, may be changed in the future
;; 8a BPP -> 24 BPP
; mov esi, [esi + Image.Data]
;@@:
; lodsw
; mov ah, al
; stosb
; stosw
; dec ecx
; jnz @b
; ret
 
; 15 BPP -> 24 BPP
.bpp15.intel:
push ebx ebp
972,9 → 998,9
jnz .next_line_horz1x
jmp .exit
 
.bpp8_horz:
.bpp8ig_horz:
dec edi
.next_line_horz8:
.next_line_horz8ig:
push ecx esi edi
 
mov ecx, [scanline_len]
992,7 → 1018,7
add esi, [scanline_len]
add edi, [scanline_len]
dec ecx
jnz .next_line_horz8
jnz .next_line_horz8ig
jmp .exit
 
.bpp24_horz:
1180,8 → 1206,10
 
cmp [ebx + Image.Type], Image.bpp1
jz .rotate_ccw1
cmp [ebx + Image.Type], Image.bpp8
jz .rotate_ccw8
cmp [ebx + Image.Type], Image.bpp8i
jz .rotate_ccw8ig
cmp [ebx + Image.Type], Image.bpp8g
jz .rotate_ccw8ig
cmp [ebx + Image.Type], Image.bpp24
jz .rotate_ccw24
cmp [ebx + Image.Type], Image.bpp32
1273,8 → 1301,8
pop ecx
jmp .next_column_ccw_low
 
.rotate_ccw8:
.next_column_ccw_low8:
.rotate_ccw8ig:
.next_column_ccw_low8ig:
dec ecx
js .exchange_dims
push ecx
1319,7 → 1347,7
rep movsb
 
pop ecx
jmp .next_column_ccw_low8
jmp .next_column_ccw_low8ig
 
.rotate_ccw24:
.next_column_ccw_low24:
1472,8 → 1500,10
 
cmp [ebx + Image.Type], Image.bpp1
jz .rotate_cw1
cmp [ebx + Image.Type], Image.bpp8
jz .rotate_cw8
cmp [ebx + Image.Type], Image.bpp8i
jz .rotate_cw8ig
cmp [ebx + Image.Type], Image.bpp8g
jz .rotate_cw8ig
cmp [ebx + Image.Type], Image.bpp24
jz .rotate_cw24
cmp [ebx + Image.Type], Image.bpp32
1570,8 → 1600,8
pop ecx
jmp .next_column_cw_low
 
.rotate_cw8:
.next_column_cw_low8:
.rotate_cw8ig:
.next_column_cw_low8ig:
dec ecx
js .exchange_dims
push ecx
1618,7 → 1648,7
rep movsb
 
pop ecx
jmp .next_column_cw_low8
jmp .next_column_cw_low8ig
 
.rotate_cw24:
.next_column_cw_low24:
1889,7 → 1919,7
.pcx dd LIBIMG_FORMAT_ID_PCX, img.is.pcx, img.decode.pcx, img.encode.pcx, 0
.xcf dd LIBIMG_FORMAT_ID_XCF, img.is.xcf, img.decode.xcf, img.encode.xcf, 0
.tiff dd LIBIMG_FORMAT_ID_TIFF, img.is.tiff, img.decode.tiff, img.encode.tiff,0
.pnm dd LIBIMG_FORMAT_ID_PNM, img.is.pnm, img.decode.pnm, img.encode.pnm, 1 + (1 SHL Image.bpp1) + (1 SHL Image.bpp8) + (1 SHL Image.bpp24)
.pnm dd LIBIMG_FORMAT_ID_PNM, img.is.pnm, img.decode.pnm, img.encode.pnm, 1 + (1 SHL Image.bpp1) + (1 SHL Image.bpp8g) + (1 SHL Image.bpp24)
.wbmp dd LIBIMG_FORMAT_ID_WBMP, img.is.wbmp, img.decode.wbmp, img.encode.wbmp,0
.z80 dd LIBIMG_FORMAT_ID_Z80, img.is.z80, img.decode.z80, img.encode.z80, 0 ;this must be the last entry as there are no signatures in z80 screens at all
dd 0
1989,8 → 2019,12
jae .error
cmp [ebx + Image.Type], Image.bpp1
jz .bpp1
cmp [ebx + Image.Type], Image.bpp8
jz .bpp8
cmp [ebx + Image.Type], Image.bpp8i
jz .bpp8i
cmp [ebx + Image.Type], Image.bpp8g
jz .bpp8g
cmp [ebx + Image.Type], Image.bpp8a
jz .bpp8a
cmp [ebx + Image.Type], Image.bpp24
jz .bpp24
.bpp32:
1999,9 → 2033,13
.bpp24:
lea eax, [eax*3]
jmp @f
.bpp8:
.bpp8i:
add eax, 256*4 ; for palette
.bpp8g:
jmp @f
.bpp8a:
shl eax, 1
jmp @f
.bpp1:
mov eax, [_width]
add eax, 7
2040,7 → 2078,7
pop [ebx + Image.Width]
push [_height]
pop [ebx + Image.Height]
cmp [ebx + Image.Type], Image.bpp8
cmp [ebx + Image.Type], Image.bpp8i
jnz @f
lea esi, [eax + esi - 256*4]
mov [ebx + Image.Palette], esi
2070,8 → 2108,12
;;================================================================================================;;
cmp [ebx + Image.Type], Image.bpp1
jz .bpp1.1
cmp [ebx + Image.Type], Image.bpp8
cmp [ebx + Image.Type], Image.bpp8i
jz .bpp8.1
cmp [ebx + Image.Type], Image.bpp8g
jz .bpp8.1
cmp [ebx + Image.Type], Image.bpp8a
jz .bpp8a.1
cmp [ebx + Image.Type], Image.bpp24
jz .bpp24.1
add eax, eax
2085,6 → 2127,9
.bpp1.1:
add eax, 7
shr eax, 3
jmp .quit
.bpp8a.1:
shl eax, 1
.bpp8.1:
.quit:
ret
2099,22 → 2144,26
;;================================================================================================;;
 
align 4
type2bpp dd 8, 24, 32, 15, 16, 1
type2bpp dd 8, 24, 32, 15, 16, 1, 9 ;,16
img._.do_rgb.handlers:
dd img._.do_rgb.bpp8
dd img._.do_rgb.bpp8i
dd img._.do_rgb.bpp24
dd img._.do_rgb.bpp32
dd img._.do_rgb.bpp15.amd ; can be overwritten in lib_init
dd img._.do_rgb.bpp16.amd ; can be overwritten in lib_init
dd img._.do_rgb.bpp1
dd img._.do_rgb.bpp8g
; dd img._.do_rgb.bpp8a
 
img.flip.layer.handlers_horz:
dd img.flip.layer.bpp8_horz
dd img.flip.layer.bpp8ig_horz
dd img.flip.layer.bpp24_horz
dd img.flip.layer.bpp32_horz
dd img.flip.layer.bpp1x_horz
dd img.flip.layer.bpp1x_horz
dd img.flip.layer.bpp1_horz
dd img.flip.layer.bpp8ig_horz
; dd img.flip.layer.bpp8a_horz
 
;;================================================================================================;;
;;////////////////////////////////////////////////////////////////////////////////////////////////;;
/programs/develop/libraries/libs-dev/libimg/libimg.inc
69,13 → 69,15
 
; values for Image.Type
; must be consecutive to allow fast switch on Image.Type in support functions
Image.bpp8 = 1
Image.bpp8i = 1 ; indexed
Image.bpp24 = 2
Image.bpp32 = 3
Image.bpp15 = 4
Image.bpp16 = 5
Image.bpp1 = 6
Image.bpp4 = 7
Image.bpp8g = 7 ; grayscale
Image.bpp8a = 8 ; grayscale with alpha channel; application layer only!!! kernel doesn't handle this image type, libimg can only create and destroy such images
;Image.bpp4 = 9
 
; bits in Image.Flags
Image.IsAnimated = 1
/programs/develop/libraries/libs-dev/libimg/pcx/pcx.asm
157,7 → 157,7
 
.indexed:
 
stdcall img.create, eax, ebx, Image.bpp8
stdcall img.create, eax, ebx, Image.bpp8i
mov [retvalue], eax
test eax, eax
jz .quit
/programs/develop/libraries/libs-dev/libimg/png/png.asm
239,7 → 239,7
mov al, Image.bpp32
cmp [.color_type], 6
jz @f
mov al, Image.bpp8
mov al, Image.bpp8i
@@:
stdcall img.create, [.width], [.height], eax
test eax, eax
/programs/develop/libraries/libs-dev/libimg/pnm/pgm.asm
1,17 → 1,10
.pgm:
stdcall img.create, [width], [height], Image.bpp8
stdcall img.create, [width], [height], Image.bpp8g
test eax, eax
jz .quit
mov [retvalue], eax
mov ebx, eax
 
mov edi, [ebx+Image.Palette]
mov eax, 0xff000000
@@:
stosd
add eax, 0x00010101
jnc @b
 
mov edi, [ebx+Image.Data]
mov ecx, [ebx+Image.Width]
imul ecx, [ebx+Image.Height]
/programs/develop/libraries/libs-dev/libimg/pnm/pnm.asm
204,7 → 204,7
mov eax, [ebx + Image.Type]
cmp eax, Image.bpp1
je .pbm
cmp eax, Image.bpp8
cmp eax, Image.bpp8g
je .pgm
cmp eax, Image.bpp24
je .ppm
/programs/develop/libraries/libs-dev/libimg/tiff/tiff.asm
18,7 → 18,6
;;================================================================================================;;
 
include 'tiff.inc'
;include '../../../../../system/board/trunk/debug.inc'
 
;;================================================================================================;;
proc img.is.tiff _data, _length ;/////////////////////////////////////////////////////////////////;;
185,7 → 184,7
 
mov ecx, [edx + Image.Type]
dec ecx
jz .bpp8
jz .bpp8i
dec ecx
jz .bpp24
dec ecx
196,7 → 195,9
dec ecx
jz .bpp1
dec ecx
jz .bpp4
jz .bpp8g
dec ecx
jz .bpp8a
;error report!!
 
.bpp1:
216,10 → 217,7
.bpp4:
jmp .common
 
.bpp8:
cmp [ebx + tiff_extra.palette], 0
je .bpp8.grayscale
 
.bpp8i:
mov esi, [ebx + tiff_extra.palette]
mov ah, 2
.bpp8.channel:
238,15 → 236,12
dec ah
jns .bpp8.channel
jmp .common
.bpp8.grayscale:
mov edi, [edx + Image.Palette]
mov eax, 0xff000000
@@:
stosd
add eax, 0x00010101
jnc @b
.bpp8g:
jmp .common
 
.bpp8a:
jmp .common
 
.bpp16:
jmp .common
 
346,8 → 341,9
 
 
.decoded:
.check1:
cmp [ebx + tiff_extra.samples_per_pixel], 3
jne .pop_quit
jne .check2
mov eax, [retvalue]
mov esi, [eax + Image.Data]
mov edi, [eax + Image.Data]
360,8 → 356,27
add edi, 2
dec ecx
jnz @b
jmp .pop_quit
.check2:
mov ebx, [retvalue]
cmp [ebx + Image.Type], Image.bpp8a
jne .pop_quit
stdcall tiff._.pack_8a, ebx
mov [ebx + Image.Type], Image.bpp8g
; mov eax, [ebx + Image.Width]
; imul eax, [ebx + Image.Height]
; mov ecx, eax
; add ecx, [ebx + Image.Data]
; mov [ebx + Image.Palette], ecx
; add eax, 256*4
; stdcall [mem.realloc], [ebx + Image.Data], eax
; mov edi, [ebx + Image.Palette]
; mov eax, 0xff000000
; @@:
; stosd
; add eax, 0x00010101
; jnc @b
 
 
.pop_quit:
pop esi
.quit:
392,7 → 407,7
lodsd
jmp .quit ; just skip it
 
.tag_100:
.tag_100: ; ImageWidth
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
lodsd
411,7 → 426,7
@@:
jmp .quit
 
.tag_101:
.tag_101: ; ImageHeight
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
lodsd
430,7 → 445,7
@@:
jmp .quit
 
.tag_102:
.tag_102: ; BitsPerSample
lodsd_
imul eax, TIFF.IFDE_TYPE_LENGTH.SHORT
cmp eax, 4
451,7 → 466,7
mov [ebx + tiff_extra.bits_per_sample], eax
jmp .quit
 
.tag_103:
.tag_103: ; Compression
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
lodsd
463,7 → 478,7
@@:
jmp .quit
 
.tag_106:
.tag_106: ; PhotometricInterpretation
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
lodsd
476,7 → 491,7
 
jmp .quit
 
.tag_111:
.tag_111: ; StripOffsets
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
mov [ebx + tiff_extra.strip_offsets_length], TIFF.IFDE_TYPE_LENGTH.SHORT
498,7 → 513,7
mov [ebx + tiff_extra.strip_offsets], eax
jmp .quit
 
.tag_115:
.tag_115: ; SamplesPerPixel
lodsd_
imul eax, TIFF.IFDE_TYPE_LENGTH.SHORT
cmp eax, 4
514,7 → 529,7
movzx eax, word[eax]
jmp .quit
 
.tag_116:
.tag_116: ; RowsPerStrip
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
lodsd
529,7 → 544,7
mov [ebx + tiff_extra.rows_per_strip], eax
jmp .quit
 
.tag_117:
.tag_117: ; StripByteCounts
cmp ax, TIFF.IFDE_TYPE.SHORT
jne @f
mov [ebx + tiff_extra.strip_byte_counts_length], TIFF.IFDE_TYPE_LENGTH.SHORT
550,12 → 565,17
mov [ebx + tiff_extra.strip_byte_counts], eax
jmp .quit
 
.tag_140:
.tag_140: ; ColorMap
lodsd
lodsd_
add eax, [_data]
mov [ebx + tiff_extra.palette], eax
jmp .quit
.tag_152: ; ExtraSamples
mov [ebx + tiff_extra.extra_samples], esi
mov ecx, [ebx + tiff_extra.extra_samples_number]
rep lodsw ; ignored
jmp .quit
 
.quit:
pop edi edx ebx
567,43 → 587,52
 
xor eax, eax
 
cmp [ebx + tiff_extra.photometric], TIFF.PHOTOMETRIC.RGB
jne .not_full_color
mov eax, -3
add eax, [ebx + tiff_extra.samples_per_pixel]
mov [ebx + tiff_extra.extra_samples_number], eax
dec eax
jns @f
mov eax, Image.bpp24
jmp .quit
@@:
dec eax
jns @f
mov eax, Image.bpp32
; mov [ebx + tiff_extra.extra_samples_number], 0
jmp .quit
@@:
.not_full_color: ; grayscale, indexed, bilevel
cmp [ebx + tiff_extra.bits_per_sample], 1
jg .not_bilevel
mov eax, Image.bpp1
jmp .quit
.not_bilevel:
.not_bilevel: ; grayscale, indexed
cmp [ebx + tiff_extra.palette], 0
je .without_palette
cmp [ebx + tiff_extra.bits_per_sample], 4
jne @f
mov eax, Image.bpp4
; mov eax, Image.bpp4
jmp .quit
@@:
cmp [ebx + tiff_extra.bits_per_sample], 8
jne @f
mov eax, Image.bpp8
mov eax, Image.bpp8i
jmp .quit
@@:
jmp .quit
.without_palette:
cmp [ebx + tiff_extra.samples_per_pixel], 1
jg .not_grayscale
cmp [ebx + tiff_extra.bits_per_sample], 4
jne @f
mov eax, Image.bpp4
.without_palette: ; grayscale
mov eax, -1
add eax, [ebx + tiff_extra.samples_per_pixel]
mov [ebx + tiff_extra.extra_samples_number], eax
dec eax
jns @f
mov eax, Image.bpp8g
jmp .quit
@@:
cmp [ebx + tiff_extra.bits_per_sample], 8
jne @f
mov eax, Image.bpp8
mov eax, Image.bpp8a
jmp .quit
.not_grayscale:
cmp [ebx + tiff_extra.samples_per_pixel], 3
jne @f
mov eax, Image.bpp24
jmp .quit
@@:
jmp .quit
.quit:
ret
endp
830,6 → 859,20
endp
 
 
proc tiff._.pack_8a _img
mov ebx, [_img]
mov esi, [ebx + Image.Data]
mov edi, esi
mov ecx, [ebx + Image.Width]
imul ecx, [ebx + Image.Height]
@@:
lodsw
stosb
dec ecx
jnz @b
ret
endp
 
;;================================================================================================;;
;;////////////////////////////////////////////////////////////////////////////////////////////////;;
;;================================================================================================;;
848,6 → 891,7
.tag_116: dd 0x0116, tiff._.parse_IFDE.tag_116 ; rows per strip
.tag_117: dd 0x0117, tiff._.parse_IFDE.tag_117 ; strip byte counts
.tag_140: dd 0x0140, tiff._.parse_IFDE.tag_140 ; color map
.tag_152: dd 0x0152, tiff._.parse_IFDE.tag_152 ; extra samples
tiff.IFDE_tag_table.end:
 
include 'huffman.asm' ; huffman trees for ccitt1d compression method
/programs/develop/libraries/libs-dev/libimg/tiff/tiff.inc
38,6 → 38,8
strip_byte_counts_length rd 1
palette rd 1 ; SHORT
palette_size rd 1 ; in colors, not samples
extra_samples rd 1 ; pointer to array of SHORTs
extra_samples_number rd 1
ends
 
 
/programs/develop/libraries/libs-dev/libimg/xcf/composite_mmx.asm
387,13 → 387,15
 
punpcklbw mm2, mm0
punpcklbw mm3, mm0
movq mm5, [xcf._.mmx_00ff]
movq mm4, mm5
movq mm4, [xcf._.mmx_00ff]
movq mm5, mm4
psubw mm5, mm3
movq mm3, mm4
psubw mm4, mm2
psubw mm3, mm5
pmullw mm3, mm4
psrlw mm3, 8
paddw mm3, mm5
pmullw mm4, mm5
psrlw mm4, 8
psubw mm3, mm4
 
ret
endp
 
/programs/develop/libraries/libs-dev/libimg/xcf/composite_sse.asm
583,13 → 583,14
 
punpcklbw xmm2, xmm0
punpcklbw xmm3, xmm0
movdqu xmm5, xword[xcf._.xmm_00ff]
movdqa xmm4, xmm5
movdqu xmm4, xword[xcf._.xmm_00ff]
movdqa xmm5, xmm4
psubw xmm5, xmm3
movdqa xmm3, xmm4
psubw xmm4, xmm2
psubw xmm3, xmm5
pmullw xmm3, xmm4
psrlw xmm3, 8
paddw xmm3, xmm5
pmullw xmm4, xmm5
psrlw xmm4, 8
psubw xmm3, xmm4
ret
endp
 
/programs/develop/libraries/libs-dev/libimg/xcf/xcf.asm
130,7 → 130,7
 
.process_grayscale:
 
stdcall img.create, ebx, edx, Image.bpp8
stdcall img.create, ebx, edx, Image.bpp8i
mov [retvalue], eax
test eax, eax
jz .error
160,7 → 160,7
 
.process_indexed:
 
stdcall img.create, ebx, edx, Image.bpp8
stdcall img.create, ebx, edx, Image.bpp8i
mov [retvalue], eax
test eax, eax
jz .error
217,7 → 217,7
dec [layer_count]
jnz .still
 
cmp [ebx + Image.Type], Image.bpp8
cmp [ebx + Image.Type], Image.bpp8i
jne .quit
stdcall xcf._.pack_8a, ebx
jmp .quit
372,7 → 372,7
bswap eax
add esi, eax
 
stdcall img.create, [channel_width], [channel_height], Image.bpp8
stdcall img.create, [channel_width], [channel_height], Image.bpp8i
mov ebx, eax
test ebx, ebx
jz .quit
443,7 → 443,7
mov [layer_height], eax
lodsd
bswap eax
mov edx, Image.bpp16
mov edx, Image.bpp8a
mov [color_step], 1
cmp eax, 2
jge @f
899,7 → 899,7
imul eax, [img_y1]
add eax, [img_x1]
shl eax, 1
cmp [edx + Image.Width], Image.bpp16
cmp [edx + Image.Width], Image.bpp8a
je @f
shl eax, 1
@@:
909,7 → 909,7
imul eax, [bottom_y1]
add eax, [bottom_x1]
shl eax, 1
cmp [ebx + Image.Width], Image.bpp8
cmp [ebx + Image.Width], Image.bpp8i
je @f
shl eax, 1
@@:
919,7 → 919,7
mov eax, [edx + Image.Width]
sub eax, [copy_width]
shl eax, 1
cmp [edx + Image.Width], Image.bpp16
cmp [edx + Image.Width], Image.bpp8a
je @f
shl eax, 1
@@:
928,7 → 928,7
mov eax, [ebx + Image.Width]
sub eax, [copy_width]
shl eax, 1
cmp [ebx + Image.Width], Image.bpp8
cmp [ebx + Image.Width], Image.bpp8i
je @f
shl eax, 1
@@:
938,7 → 938,7
jne .not_first
mov ecx, [copy_width]
imul ecx, [copy_height]
cmp [ebx + Image.Type], Image.bpp8
cmp [ebx + Image.Type], Image.bpp8i
je .bpp8a
.bpp32:
rep movsd
997,7 → 997,7
@@:
 
 
cmp [ebx + Image.Type], Image.bpp8
cmp [ebx + Image.Type], Image.bpp8i
jne @f
stdcall xcf._.merge_8a, [copy_width], [copy_height], [img_total_bpl], [bottom_total_bpl]
jmp .done
/programs/develop/libraries/libs-dev/libimg/z80/z80.asm
71,7 → 71,7
xor eax,eax
pushad
cld ;paranoia
stdcall img.create,256,192,Image.bpp8
stdcall img.create,256,192,Image.bpp8i
test eax,eax
jz img.decode.z80.locret ;test if allocation failed
mov [frame1],eax
101,7 → 101,7
.decode_z80_with_blinking:
or ebx,0xFFFF0000 ;use DualStos
mov ecx,eax ;eax still points to the first frame
stdcall img.create,256,192,Image.bpp8
stdcall img.create,256,192,Image.bpp8i
test eax,eax
jz img.decode.z80.failed
mov [eax+Image.Previous],ecx