Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2396 → Rev 2397

/programs/develop/libraries/libs-dev/libimg/pcx/pcx.asm
36,13 → 36,13
 
mov edi, [_data]
 
cmp [edi + pcx_header.magic_number], 10
cmp byte[edi + pcx_header.magic_number], 0x0A
jne .is_not_pcx
cmp [edi + pcx_header.version], 5
cmp byte[edi + pcx_header.version], 5
jne .is_not_pcx
cmp [edi + pcx_header.encoding], 1
cmp byte[edi + pcx_header.encoding], 1
jne .is_not_pcx
cmp [edi + pcx_header.reserved], 0
cmp byte[edi + pcx_header.reserved], 0
jne .is_not_pcx
 
add edi, pcx_header.filler
74,9 → 74,9
;;================================================================================================;;
locals
nplanes rd 1
xsize rw 1
ysize rw 1
bpl rw 1
xsize rd 1
ysize rd 1
bpl rd 1
total_bpl rd 1
line_begin rd 1
retvalue rd 1 ; 0 (error) or pointer to image
87,25 → 87,21
mov esi, [_data]
movzx eax, byte[esi + pcx_header.nplanes]
mov [nplanes], eax
mov bx, word[esi + pcx_header.bpl]
mov [bpl], bx
mul bx
shl eax, 16
mov ax, dx
ror eax, 16
movzx ebx, word[esi + pcx_header.bpl]
mov [bpl], ebx
imul eax, ebx
mov [total_bpl], eax
 
movzx eax, word[esi + pcx_header.xmax]
inc ax
sub ax, word[esi + pcx_header.xmin]
mov [xsize], ax
inc eax
mov [xsize], eax
 
movzx ebx, word[esi + pcx_header.ymax]
inc bx
sub bx, word[esi + pcx_header.ymin]
mov [ysize], bx
inc ebx
mov [ysize], ebx
 
 
cmp [esi + pcx_header.bpp], 1
jz .monochrome
cmp byte[esi + pcx_header.nplanes], 3
112,7 → 108,7
jnz .indexed
 
 
._24bit:
.24bit:
 
stdcall img.create, eax, ebx, Image.bpp24
mov [retvalue], eax
119,53 → 115,45
test eax, eax
jz .quit
 
movzx ebx, [xsize]
movzx ecx, [ysize]
mov edx, [eax+Image.Data]
 
rol ebx, 16
or ebx, ecx
xor ebx, [edx]
mov [eax + Image.Checksum], ebx
 
 
mov esi, [_data]
add esi, 128
; mov edi, [retvalue]
add esi, 128 ; skip header
mov edi, [eax + Image.Data]
add edi, 2
mov [line_begin], edi
 
.24bit.scanline:
mov ebx, [total_bpl]
 
._24bit.begin:
mov ax, word[bpl]
._24bit.decode:
.24bit.color_line:
mov edx, [bpl]
.24bit.next_byte:
call pcx._.get_byte
._24bit.write_sequence:
mov [edi], dl
dec ax
sub edx, ecx
@@:
mov [edi], al
add edi, [nplanes]
dec dh
jnz ._24bit.write_sequence
dec ecx
jnz @b
 
test ax, ax
jz ._24bit.end_color_line
jmp ._24bit.decode
test edx, edx
jnz .24bit.next_byte
 
._24bit.end_color_line:
.24bit.end_color_line:
test ebx, ebx
jz ._24bit.end_full_line
jz .24bit.end_full_line
dec [line_begin]
mov edi, [line_begin]
jmp ._24bit.begin
jmp .24bit.color_line
 
._24bit.end_full_line:
dec word[ysize]
.24bit.end_full_line:
dec [ysize]
jz .quit
mov ebx, [total_bpl]
add edi, 2
bt [xsize], 0
jnc @f
sub edi, 3
@@:
mov [line_begin], edi
jmp ._24bit.begin
jmp .24bit.scanline
 
 
.indexed:
175,56 → 163,42
test eax, eax
jz .quit
 
movzx ebx, [xsize]
movzx ecx, [ysize]
mov edx, [eax + Image.Data]
 
rol ebx, 16
or ebx, ecx
xor ebx, [edx]
mov [eax + Image.Checksum], ebx
 
mov ebx, eax
mov esi, [_data]
add esi, [_length]
sub esi, 768
mov edi, [eax + Image.Palette]
mov cx, 256
mov ecx, 256
xor eax, eax
@@:
mov ebx, [esi]
bswap ebx
shr ebx, 8
mov [edi], ebx
add edi, 4
add esi, 3
dec cx
lodsw
xchg al, ah
shl eax, 8
lodsb
stosd
dec ecx
jnz @b
 
mov esi, [_data]
add esi, 128
; mov edi, [retvalue]
mov edi, [eax + Image.Data]
mov edi, [ebx + Image.Data]
 
.indexed.begin:
mov ax, word[bpl]
.indexed.decode:
.indexed.line:
mov ebx, [total_bpl]
.indexed.next_byte:
call pcx._.get_byte
.indexed.write_sequence:
mov [edi], dl
inc edi
dec ax
dec dh
jnz .indexed.write_sequence
@@:
stosb
dec ecx
jnz @b
test ebx, ebx
jnz .indexed.next_byte
 
test ax, ax
jz .indexed.end_line
jmp .indexed.decode
dec [ysize]
jnz .indexed.line
jmp .quit
 
.indexed.end_line:
dec word[ysize]
jz .quit
jmp .indexed.begin
 
 
.monochrome:
 
stdcall img.create, eax, ebx, Image.bpp1
232,50 → 206,28
test eax, eax
jz .quit
 
movzx ebx, [xsize]
movzx ecx, [ysize]
mov edx, [eax + Image.Data]
 
rol ebx, 16
or ebx, ecx
xor ebx, [edx]
mov [eax + Image.Checksum], ebx
 
mov edi, [eax + Image.Palette]
mov [edi], dword 0x00000000
mov [edi + 4], dword 0x00ffffff
mov [edi], dword 0xff000000
mov [edi + 4], dword 0xffffffff
 
mov esi, [_data]
add esi, 128
; mov edi, [retvalue]
mov edi, [eax + Image.Data]
 
 
.monochrome.begin:
.monochrome.line:
mov ebx, [total_bpl]
mov ax, [xsize]
 
.monochrome.decode:
.monochrome.next_byte:
call pcx._.get_byte
.monochrome.write_sequence:
mov [edi], dl
inc edi
cmp ax, 8
jng .monochrome.is_last_byte_in_line
sub ax, 8
dec dh
jnz .monochrome.write_sequence
jmp .monochrome.decode
 
.monochrome.is_last_byte_in_line:
@@:
stosb
dec ecx
jnz @b
test ebx, ebx
jng @f
call pcx._.get_byte
jmp .monochrome.is_last_byte_in_line
@@:
dec word[ysize]
jnz .monochrome.begin
jmp .quit
jnz .monochrome.next_byte
dec [ysize]
jnz .monochrome.line
; jmp .quit
 
 
.quit:
309,19 → 261,15
;;================================================================================================;;
proc pcx._.get_byte
 
mov dh, byte[esi]
inc esi
cmp dh, 0xC0
jnb .cycle1
mov dl, dh
mov dh, 1
jmp .exit1
.cycle1:
and dh, 0x3F
mov dl, byte[esi]
inc esi
.exit1:
movzx ecx, dh
xor ecx, ecx
lodsb
cmp al, 0xC0
setb cl
jb .done
and al, 0x3F
mov cl, al
lodsb
.done:
sub ebx, ecx
ret
endp
/programs/develop/libraries/libs-dev/libimg/tiff/tiff.asm
625,7 → 625,7
.decode:
lodsb
dec edx
cmp al, 0xff
cmp al, 0x7f
jbe .different
cmp al, 0x80
jne .identical