Subversion Repositories Kolibri OS

Rev

Rev 6328 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
255 heavyiron 1
; load picture from file to memory
6328 IgorA 2
align 4
3
open_b rb 560
255 heavyiron 4
 
5
load_picture:
6328 IgorA 6
    mov [file_information.Function], SSF_GET_INFO
7
    mov [file_information.Position], 0
8
    mov [file_information.Flags], 0
9
    mov dword[file_information.Count], 0
10
    mov dword[file_information.Buffer], open_b
11
    mov byte[file_information+20], 0
12
    mov dword[file_information.FileName], file_path
13
    mcall SF_FILE,file_information
14
	or eax,eax
15
	jnz .end_open
255 heavyiron 16
 
6328 IgorA 17
    mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
6342 IgorA 18
	add ecx,mem_screen+mem_panel_b+mem_flood_f
6328 IgorA 19
	mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer]
20
	mov [ScreenPointer],eax
6342 IgorA 21
	add eax,mem_screen+mem_panel_b
22
	sub ecx,mem_screen+mem_panel_b+mem_flood_f
6328 IgorA 23
	mov [file_information.Function], SSF_READ_FILE
24
	mov [file_information.Position], 0
25
	mov [file_information.Flags], 0
26
	mov [file_information.Count], ecx
27
	mov [file_information.Buffer], eax
28
	mov byte[file_information+20], 0
29
	mov [file_information.FileName], file_path
30
	mcall SF_FILE,file_information ;загружаем файл изображения
31
	cmp ebx,0xffffffff
32
	je .end_open
33
		;определяем вид изображения и пишем его параметры
34
		mov eax,[ScreenPointer]
6342 IgorA 35
		add eax,mem_screen+mem_panel_b
6328 IgorA 36
		stdcall [img_decode], eax,ebx,0
37
		push eax
38
		;определяем размер декодированного изображения
39
		mov ecx,[eax+4] ;+4 = image width
40
		mov dword[Picture_SizeX],ecx
41
		mov eax,[eax+8] ;+8 = image height
42
		mov dword[Picture_SizeY],eax
43
		imul ecx,eax
44
		imul ecx,15
6342 IgorA 45
		add ecx,mem_screen+mem_panel_b+mem_flood_f
6328 IgorA 46
		mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer]
47
		mov [ScreenPointer],eax
48
		call prepare_data_pointers
49
		pop ebx
50
		stdcall [img_to_rgb2], ebx,[PointerToPicture] ;преобразуем изображение к формату rgb
51
		stdcall [img_destroy], ebx ;удаляем временный буфер с параметрами изображения
52
		mov [save_flag],1
53
	.end_open:
1643 mario79 54
	ret