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 |