Rev 6189 | Rev 8174 | 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 129... | Line 49... | ||
129 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
49 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
130 | mov eax,[eax] ;eax -> ZBuffer |
50 | mov eax,[eax] ;eax -> ZBuffer |
131 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
51 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
132 | mov dword[buf_ogl],eax |
52 | mov dword[buf_ogl],eax |
Line 133... | Line 53... | ||
133 | 53 | ||
134 | load_image_file 'font8x9.bmp', image_data_toolbar |
54 | load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h |
135 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
55 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
136 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
56 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
137 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
57 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
Line 292... | Line 212... | ||
292 | 212 | ||
293 | align 4 |
213 | align 4 |
294 | but_zoom_p: |
214 | but_zoom_p: |
295 | finit |
215 | finit |
296 | fld dword[scale] |
216 | fld dword[scale] |
- | 217 | fadd dword[sc_delt] |
|
- | 218 | fcom dword[sc_max] |
|
- | 219 | fstsw ax |
|
- | 220 | sahf |
|
- | 221 | jbe @f |
|
- | 222 | ffree st0 |
|
- | 223 | fincstp |
|
- | 224 | fld dword[sc_max] |
|
297 | fadd dword[delt_sc] |
225 | @@: |
298 | fst dword[scale] |
226 | fst dword[scale] |
299 | mov word[NumberSymbolsAD],3 |
227 | mov word[NumberSymbolsAD],3 |
300 | fstp qword[Data_Double] |
228 | fstp qword[Data_Double] |
301 | call DoubleFloat_to_String |
229 | call DoubleFloat_to_String |
Line 307... | Line 235... | ||
307 | 235 | ||
308 | align 4 |
236 | align 4 |
309 | but_zoom_m: |
237 | but_zoom_m: |
310 | finit |
238 | finit |
311 | fld dword[scale] |
239 | fld dword[scale] |
- | 240 | fsub dword[sc_delt] |
|
- | 241 | fcom dword[sc_min] |
|
- | 242 | fstsw ax |
|
- | 243 | sahf |
|
- | 244 | ja @f |
|
- | 245 | ffree st0 |
|
- | 246 | fincstp |
|
- | 247 | fld dword[sc_min] |
|
312 | fsub dword[delt_sc] |
248 | @@: |
313 | fst dword[scale] |
249 | fst dword[scale] |
314 | mov word[NumberSymbolsAD],3 |
250 | mov word[NumberSymbolsAD],3 |
315 | fstp qword[Data_Double] |
251 | fstp qword[Data_Double] |
316 | call DoubleFloat_to_String |
252 | call DoubleFloat_to_String |
317 | mov byte[txt_scale.v],0 |
253 | mov byte[txt_scale.v],0 |
318 | stdcall str_cat, txt_scale.v,Data_String |
254 | stdcall str_cat, txt_scale.v,Data_String |
319 | call draw_3d |
255 | call draw_3d |
320 | stdcall [kosglSwapBuffers] |
256 | stdcall [kosglSwapBuffers] |
Line -... | Line 257... | ||
- | 257 | ret |
|
321 | ret |
258 | |
322 | 259 | ||
323 | align 4 |
260 | align 4 |
324 | caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
261 | caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
325 | align 4 |
262 | align 4 |
Line 349... | Line 286... | ||
349 | TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.) |
286 | TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.) |
350 | texture dd 0 ;указатель на память с текстурой |
287 | texture dd 0 ;указатель на память с текстурой |
351 | text_w dd 0 |
288 | text_w dd 0 |
352 | text_h dd 0 |
289 | text_h dd 0 |
Line 353... | Line 290... | ||
353 | 290 | ||
- | 291 | scale dd 1.5 ;начальный масштаб |
|
354 | scale dd 1.5 |
292 | sc_delt dd 0.05 ;изменение масштаба при нажатии |
- | 293 | sc_min dd 0.95 ;минимальный масштаб |
|
355 | delt_sc dd 0.05 |
294 | sc_max dd 2.5 ;максимальный масштаб |
356 | angle_z dd 0.0 |
295 | angle_z dd 0.0 |
357 | angle_x dd 90.0 |
296 | angle_x dd 90.0 |
358 | angle_y dd 0.0 |
297 | angle_y dd 0.0 |
Line 525... | Line 464... | ||
525 | dd 0,24 ;+16 color,bit in pixel |
464 | dd 0,24 ;+16 color,bit in pixel |
Line 526... | Line 465... | ||
526 | 465 | ||
527 | align 4 |
466 | align 4 |
528 | buf_1: |
467 | buf_1: |
529 | dd 0 ;указатель на буфер изображения |
468 | dd 0 ;указатель на буфер изображения |
530 | dw 25,25 ;+4 left,top |
469 | dd 0 ;+4 left,top |
531 | dd 128,144 ;+8 w,h |
470 | .w: dd 0 |
Line 532... | Line 471... | ||
532 | dd 0,24 ;+16 color,bit in pixel |
471 | .h: dd 0,0,24 ;+16 color,bit in pixel |
533 | 472 | ||
534 | align 4 |
473 | align 4 |
535 | l_libs_start: |
474 | l_libs_start: |
536 | lib_0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\ |
475 | lib_0 l_libs lib_name_0, cur_dir_path, file_name, system_dir_0,\ |
537 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
476 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
538 | lib_1 l_libs lib_name_1, cur_dir_path, library_path, system_dir_1,\ |
477 | lib_1 l_libs lib_name_1, cur_dir_path, file_name, system_dir_1,\ |
539 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
478 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
540 | lib_2 l_libs lib_name_2, cur_dir_path, library_path, system_dir_2,\ |
479 | lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\ |
Line 541... | Line 480... | ||
541 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
480 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
542 | l_libs_end: |
481 | l_libs_end: |
Line 547... | Line 486... | ||
547 | sc system_colors |
486 | sc system_colors |
548 | align 16 |
487 | align 16 |
549 | rb 4096 |
488 | rb 4096 |
550 | stacktop: |
489 | stacktop: |
551 | cur_dir_path rb 4096 |
490 | cur_dir_path rb 4096 |
552 | library_path rb 4096 |
- | |
553 | file_name rb 4096 |
491 | file_name rb 4096 |
554 | mem:-],[-> |
492 | mem:-],[-> |