2006-12-29 17:50:24 +03:00
|
|
|
; load picture from file to memory
|
|
|
|
|
|
|
|
load_picture:
|
2010-10-05 00:40:19 +04:00
|
|
|
mov eax,file_path
|
|
|
|
mov ebx,[ScreenPointer]
|
|
|
|
add ebx,0x10000
|
|
|
|
|
|
|
|
call load_heading_of_file
|
|
|
|
|
|
|
|
mov esi,[ScreenPointer]
|
|
|
|
add esi,0x10000
|
|
|
|
;-------------is this BMP file ?----------------
|
|
|
|
xor eax,eax
|
|
|
|
mov ax,[esi]
|
|
|
|
mov [type],ax
|
|
|
|
|
|
|
|
cmp [type],word 'BM'
|
|
|
|
jne no_bmp_file_1
|
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
xor ebx,ebx
|
|
|
|
mov eax,[esi+18]
|
|
|
|
mov ebx,[esi+22]
|
|
|
|
mov [Picture_SizeX],eax
|
|
|
|
mov [Picture_SizeY],ebx
|
|
|
|
jmp exit_type_1
|
|
|
|
|
|
|
|
no_bmp_file_1:
|
|
|
|
;-------------is this GIF file ?----------------
|
|
|
|
xor eax,eax
|
|
|
|
mov ax,[esi]
|
|
|
|
mov [type],ax
|
|
|
|
cmp [type],'GI'
|
|
|
|
jne no_gif_file_1
|
|
|
|
|
|
|
|
add esi,6
|
|
|
|
xor eax,eax
|
|
|
|
xor ebx,ebx
|
|
|
|
mov ax,word[esi]
|
|
|
|
mov bx,word[esi+2]
|
|
|
|
mov [Picture_SizeX],eax
|
|
|
|
mov [Picture_SizeY],ebx
|
|
|
|
jmp exit_type_1
|
|
|
|
|
|
|
|
no_gif_file_1:
|
|
|
|
jmp no_unpakcing_file_1
|
|
|
|
|
|
|
|
exit_type_1:
|
|
|
|
;----------------------------------------------------------
|
|
|
|
;Get momory for unpacking picture and for picture's bufers
|
|
|
|
;----------------------------------------------------------
|
|
|
|
call GetMemory
|
|
|
|
;----------------------------------------------------------
|
|
|
|
;--------------------Load file in memory-------------------
|
|
|
|
;----------------------------------------------------------
|
|
|
|
|
|
|
|
mov eax,file_path
|
|
|
|
mov ebx,[PointerToCopyPicture]
|
|
|
|
add ebx,1000
|
|
|
|
call load_file
|
|
|
|
|
|
|
|
;----------------------------------------------------------
|
|
|
|
;-------------------Unpacking picture----------------------
|
|
|
|
;----------------------------------------------------------
|
|
|
|
mov esi,[PointerToCopyPicture]
|
|
|
|
add esi,1000
|
|
|
|
mov edi,[PointerToPicture]
|
|
|
|
mov eax,[ScreenPointer]
|
|
|
|
cmp [type],'BM'
|
|
|
|
jne no_unpakcing_bmp_file_1
|
|
|
|
;BMP DECODER
|
|
|
|
call bmptoimg
|
|
|
|
mov [save_flag],1
|
|
|
|
jmp no_unpakcing_file_1
|
|
|
|
|
|
|
|
no_unpakcing_bmp_file_1:
|
|
|
|
cmp [type],'GI'
|
|
|
|
jne no_unpakcing_file_1
|
|
|
|
;GIF DECODER
|
|
|
|
sub edi,8
|
|
|
|
call ReadGIF
|
|
|
|
mov [save_flag],1
|
|
|
|
|
|
|
|
no_unpakcing_file_1:
|
|
|
|
call MovePictureToWorkScreen
|
|
|
|
mov [Scroll1CoordinatX],9
|
|
|
|
mov [Scroll2CoordinatY],89
|
|
|
|
ret
|