Rev 6189 | Rev 6288 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6189 | Rev 6200 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | use32 |
1 | use32 |
2 | org 0x0 |
2 | org 0x0 |
3 | db 'MENUET01' |
3 | db 'MENUET01' |
4 | dd 1,start,i_end |
- | |
5 | dd mem,stacktop |
- | |
6 | dd 0,cur_dir_path |
4 | dd 1,start,i_end,mem,stacktop,0,cur_dir_path |
Line 7... | Line 5... | ||
7 | 5 | ||
8 | include '../../../../../proc32.inc' |
6 | include '../../../../../proc32.inc' |
9 | include '../../../../../macros.inc' |
7 | include '../../../../../macros.inc' |
10 | include '../../../../../KOSfuncs.inc' |
- | |
11 | include '../../../../../develop/libraries/box_lib/load_lib.mac' |
8 | include '../../../../../KOSfuncs.inc' |
12 | include '../../../../../dll.inc' |
9 | include '../../../../../load_img.inc' |
13 | include '../opengl_const.inc' |
10 | include '../opengl_const.inc' |
Line 14... | Line 11... | ||
14 | include '../../../../../develop/info3ds/info_fun_float.inc' |
11 | include '../../../../../develop/info3ds/info_fun_float.inc' |
Line 15... | Line -... | ||
15 | - | ||
16 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
- | |
17 | - | ||
18 | struct FileInfoBlock |
- | |
19 | Function dd ? |
- | |
20 | Position dd ? |
- | |
21 | Flags dd ? |
- | |
22 | Count dd ? |
- | |
23 | Buffer dd ? |
- | |
24 | db ? |
- | |
25 | FileName dd ? |
12 | |
26 | ends |
- | |
27 | 13 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
|
28 | align 4 |
14 | |
Line 29... | Line -... | ||
29 | open_b rb 560 |
- | |
30 | image_data_toolbar dd 0 |
- | |
31 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
- | |
32 | - | ||
33 | ;макрос для загрузки изображений |
- | |
34 | ; path - может быть переменной или строковым параметром |
- | |
35 | ; buf - переменная куда будет записан указатель на изображение в формате rgb |
- | |
36 | ; img_w, img_h - переменные куда будут записаны размеры открываемого |
- | |
37 | ; изображения, не обязательные параметры |
- | |
38 | macro load_image_file path, buf, img_w, img_h |
- | |
39 | { |
- | |
40 | if path eqtype '' ;проверяем задан ли строкой параметр path |
- | |
41 | local .path_str |
- | |
42 | jmp @f |
- | |
43 | .path_str db path ;формируем локальную переменную |
- | |
44 | db 0 |
- | |
45 | @@: |
- | |
46 | ;32 - стандартный адрес по которому должен быть буфер с системным путем |
- | |
47 | copy_path .path_str,[32],file_name,0 |
- | |
48 | else |
- | |
49 | copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой |
- | |
50 | end if |
- | |
51 | mov [run_file_70.Function], SSF_GET_INFO |
- | |
52 | mov [run_file_70.Position], 0 |
- | |
53 | mov [run_file_70.Flags], 0 |
- | |
54 | mov dword[run_file_70.Count], 0 |
- | |
55 | mov dword[run_file_70.Buffer], open_b |
- | |
56 | mov byte[run_file_70+20], 0 |
- | |
57 | mov dword[run_file_70.FileName], file_name |
- | |
58 | mcall SF_FILE,run_file_70 |
- | |
59 | or eax,eax |
- | |
60 | jnz @f |
- | |
61 | - | ||
62 | mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах |
- | |
63 | stdcall mem.Alloc,ecx ;выделяем память для изображения |
- | |
64 | mov [buf],eax |
- | |
65 | mov [run_file_70.Function], SSF_READ_FILE |
- | |
66 | mov [run_file_70.Position], 0 |
- | |
67 | mov [run_file_70.Flags], 0 |
- | |
68 | mov [run_file_70.Count], ecx |
- | |
69 | mov [run_file_70.Buffer], eax |
- | |
70 | mov byte[run_file_70+20], 0 |
- | |
71 | mov [run_file_70.FileName], file_name |
- | |
72 | mcall SF_FILE,run_file_70 ;загружаем файл изображения |
- | |
73 | cmp ebx,0xffffffff |
- | |
74 | je @f |
- | |
75 | ;определяем вид изображения и пишем его параметры |
- | |
76 | stdcall [img_decode], [buf],ebx,0 |
- | |
77 | mov ebx,eax |
- | |
78 | ;определяем размер декодированного изображения |
- | |
79 | mov ecx,[eax+4] ;+4 = image width |
- | |
80 | if img_w eq |
- | |
81 | else |
- | |
82 | mov dword[img_w],ecx |
- | |
83 | end if |
- | |
84 | if img_h eq |
- | |
85 | imul ecx,[eax+8] ;+8 = image height |
- | |
86 | else |
- | |
87 | mov eax,[eax+8] ;+8 = image height |
- | |
88 | mov dword[img_h],eax |
- | |
89 | imul ecx,eax |
- | |
90 | end if |
- | |
91 | imul ecx,3 ;need for r,g,b |
- | |
92 | stdcall mem.ReAlloc,[buf],ecx ;изменяем размер для буфера |
- | |
93 | mov [buf],eax |
- | |
94 | stdcall [img_to_rgb2], ebx,[buf] ;преобразуем изображение к формату rgb |
- | |
95 | stdcall [img_destroy], ebx ;удаляем временный буфер с параметрами изображения |
15 | align 4 |
Line 96... | Line 16... | ||
96 | @@: |
16 | image_data_toolbar dd 0 |
97 | } |
17 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
98 | 18 | ||
Line 127... | Line 47... | ||
127 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
47 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
128 | mov eax,[eax] ;eax -> ZBuffer |
48 | mov eax,[eax] ;eax -> ZBuffer |
129 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
49 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
130 | mov dword[buf_ogl],eax |
50 | mov dword[buf_ogl],eax |
Line 131... | Line 51... | ||
131 | 51 | ||
132 | load_image_file 'font8x9.bmp', image_data_toolbar |
52 | load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h |
133 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
53 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
134 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
54 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
135 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
55 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
Line 315... | Line 235... | ||
315 | 235 | ||
316 | align 4 |
236 | align 4 |
317 | but_zoom_p: |
237 | but_zoom_p: |
318 | finit |
238 | finit |
319 | fld dword[scale] |
239 | fld dword[scale] |
- | 240 | fadd dword[sc_delt] |
|
- | 241 | fcom dword[sc_max] |
|
- | 242 | fstsw ax |
|
- | 243 | sahf |
|
- | 244 | jbe @f |
|
- | 245 | ffree st0 |
|
- | 246 | fincstp |
|
- | 247 | fld dword[sc_max] |
|
320 | fadd dword[delt_sc] |
248 | @@: |
321 | fst dword[scale] |
249 | fst dword[scale] |
322 | mov word[NumberSymbolsAD],3 |
250 | mov word[NumberSymbolsAD],3 |
323 | fstp qword[Data_Double] |
251 | fstp qword[Data_Double] |
324 | call DoubleFloat_to_String |
252 | call DoubleFloat_to_String |
Line 330... | Line 258... | ||
330 | 258 | ||
331 | align 4 |
259 | align 4 |
332 | but_zoom_m: |
260 | but_zoom_m: |
333 | finit |
261 | finit |
334 | fld dword[scale] |
262 | fld dword[scale] |
- | 263 | fsub dword[sc_delt] |
|
- | 264 | fcom dword[sc_min] |
|
- | 265 | fstsw ax |
|
- | 266 | sahf |
|
- | 267 | ja @f |
|
- | 268 | ffree st0 |
|
- | 269 | fincstp |
|
- | 270 | fld dword[sc_min] |
|
335 | fsub dword[delt_sc] |
271 | @@: |
336 | fst dword[scale] |
272 | fst dword[scale] |
337 | mov word[NumberSymbolsAD],3 |
273 | mov word[NumberSymbolsAD],3 |
338 | fstp qword[Data_Double] |
274 | fstp qword[Data_Double] |
339 | call DoubleFloat_to_String |
275 | call DoubleFloat_to_String |
Line 397... | Line 333... | ||
397 | stdcall [glEnable],GL_LIGHT0 |
333 | stdcall [glEnable],GL_LIGHT0 |
398 | ret |
334 | ret |
Line 399... | Line 335... | ||
399 | 335 | ||
Line 400... | Line 336... | ||
400 | qObj dd 0 |
336 | qObj dd 0 |
- | 337 | ||
401 | 338 | scale dd 0.4 ;начальный масштаб |
|
- | 339 | sc_delt dd 0.05 ;изменение масштаба при нажатии |
|
402 | scale dd 0.4 |
340 | sc_min dd 0.1 ;минимальный масштаб |
403 | delt_sc dd 0.05 |
341 | sc_max dd 1.1 ;максимальный масштаб |
404 | angle_z dd 0.0 |
342 | angle_z dd 0.0 |
Line 405... | Line 343... | ||
405 | angle_y dd 0.0 |
343 | angle_y dd 0.0 |
Line 574... | Line 512... | ||
574 | dd 0,24 ;+16 color,bit in pixel |
512 | dd 0,24 ;+16 color,bit in pixel |
Line 575... | Line 513... | ||
575 | 513 | ||
576 | align 4 |
514 | align 4 |
577 | buf_1: |
515 | buf_1: |
578 | dd 0 ;указатель на буфер изображения |
516 | dd 0 ;указатель на буфер изображения |
579 | dw 25,25 ;+4 left,top |
517 | dd 0 ;+4 left,top |
580 | dd 128,144 ;+8 w,h |
518 | .w: dd 0 |
Line 581... | Line 519... | ||
581 | dd 0,24 ;+16 color,bit in pixel |
519 | .h: dd 0,0,24 ;+16 color,bit in pixel |
582 | 520 | ||
583 | align 4 |
521 | align 4 |
584 | l_libs_start: |
522 | l_libs_start: |
585 | lib_0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\ |
523 | lib_0 l_libs lib_name_0, cur_dir_path, file_name, system_dir_0,\ |
586 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
524 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
587 | lib_1 l_libs lib_name_1, cur_dir_path, library_path, system_dir_1,\ |
525 | lib_1 l_libs lib_name_1, cur_dir_path, file_name, system_dir_1,\ |
588 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
526 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
589 | lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\ |
527 | lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\ |
Line 596... | Line 534... | ||
596 | sc system_colors |
534 | sc system_colors |
597 | align 16 |
535 | align 16 |
598 | rb 4096 |
536 | rb 4096 |
599 | stacktop: |
537 | stacktop: |
600 | cur_dir_path rb 4096 |
538 | cur_dir_path rb 4096 |
601 | library_path rb 4096 |
- | |
602 | file_name rb 4096 |
539 | file_name rb 4096 |
603 | mem:-],[-> |
540 | mem:-],[-> |