Rev 6342 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6342 | Rev 6371 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; load picture from file to memory |
1 | ; load picture from file to memory |
2 | align 4 |
2 | align 4 |
3 | open_b rb 560 |
3 | open_b rb 560 |
- | 4 | txt_not_memory db 'Cannot open image. Because there is not enough available memory.',0 |
|
Line -... | Line 5... | ||
- | 5 | ||
4 | 6 | align 4 |
|
5 | load_picture: |
7 | load_picture: |
6 | mov [file_information.Function], SSF_GET_INFO |
8 | mov [file_information.Function], SSF_GET_INFO |
7 | mov [file_information.Position], 0 |
9 | mov [file_information.Position], 0 |
8 | mov [file_information.Flags], 0 |
10 | mov [file_information.Flags], 0 |
Line 13... | Line 15... | ||
13 | mcall SF_FILE,file_information |
15 | mcall SF_FILE,file_information |
14 | or eax,eax |
16 | or eax,eax |
15 | jnz .end_open |
17 | jnz .end_open |
Line 16... | Line 18... | ||
16 | 18 | ||
17 | mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах |
19 | mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах |
18 | add ecx,mem_screen+mem_panel_b+mem_flood_f |
20 | add ecx,mem_screen+mem_panel_all+mem_flood_f |
19 | mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer] |
21 | mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer] |
20 | mov [ScreenPointer],eax |
22 | mov [ScreenPointer],eax |
21 | add eax,mem_screen+mem_panel_b |
23 | add eax,mem_screen+mem_panel_all |
22 | sub ecx,mem_screen+mem_panel_b+mem_flood_f |
24 | sub ecx,mem_screen+mem_panel_all+mem_flood_f |
23 | mov [file_information.Function], SSF_READ_FILE |
25 | mov [file_information.Function], SSF_READ_FILE |
24 | mov [file_information.Position], 0 |
26 | mov [file_information.Position], 0 |
25 | mov [file_information.Flags], 0 |
27 | mov [file_information.Flags], 0 |
26 | mov [file_information.Count], ecx |
28 | mov [file_information.Count], ecx |
Line 30... | Line 32... | ||
30 | mcall SF_FILE,file_information ;загружаем файл изображения |
32 | mcall SF_FILE,file_information ;загружаем файл изображения |
31 | cmp ebx,0xffffffff |
33 | cmp ebx,0xffffffff |
32 | je .end_open |
34 | je .end_open |
33 | ;определяем вид изображения и пишем его параметры |
35 | ;определяем вид изображения и пишем его параметры |
34 | mov eax,[ScreenPointer] |
36 | mov eax,[ScreenPointer] |
35 | add eax,mem_screen+mem_panel_b |
37 | add eax,mem_screen+mem_panel_all |
36 | stdcall [img_decode], eax,ebx,0 |
38 | stdcall [img_decode], eax,ebx,0 |
37 | push eax |
39 | push eax |
38 | ;определяем размер декодированного изображения |
40 | ;определяем размер декодированного изображения |
39 | mov ecx,[eax+4] ;+4 = image width |
41 | mov ecx,[eax+4] ;+4 = image width |
40 | mov dword[Picture_SizeX],ecx |
42 | mov dword[Picture_SizeX],ecx |
41 | mov eax,[eax+8] ;+8 = image height |
43 | mov eax,[eax+8] ;+8 = image height |
42 | mov dword[Picture_SizeY],eax |
44 | mov dword[Picture_SizeY],eax |
43 | imul ecx,eax |
45 | imul ecx,eax |
44 | imul ecx,15 |
46 | imul ecx,15 |
45 | add ecx,mem_screen+mem_panel_b+mem_flood_f |
47 | add ecx,mem_screen+mem_panel_all+mem_flood_f |
46 | mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer] |
48 | mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer] |
- | 49 | or eax,eax |
|
- | 50 | jnz .have_new_memory |
|
- | 51 | notify_window_run txt_not_memory |
|
- | 52 | pop ebx |
|
- | 53 | jmp @f |
|
- | 54 | .have_new_memory: |
|
- | 55 | ;notify_window_run sz_main_menu_File_Open |
|
47 | mov [ScreenPointer],eax |
56 | mov [ScreenPointer],eax |
48 | call prepare_data_pointers |
57 | call prepare_data_pointers |
49 | pop ebx |
58 | pop ebx |
50 | stdcall [img_to_rgb2], ebx,[PointerToPicture] ;преобразуем изображение к формату rgb |
59 | stdcall [img_to_rgb2], ebx,[PointerToPicture] ;преобразуем изображение к формату rgb |
51 | stdcall [img_destroy], ebx ;удаляем временный буфер с параметрами изображения |
- | |
52 | mov [save_flag],1 |
60 | mov [save_flag],1 |
- | 61 | @@: |
|
- | 62 | stdcall [img_destroy], ebx ;удаляем временный буфер с параметрами изображения |
|
53 | .end_open: |
63 | .end_open: |
54 | ret |
64 | ret |