Rev 6013 | Rev 6129 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6013 | Rev 6100 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | dd mem,stacktop |
5 | dd mem,stacktop |
6 | dd 0,cur_dir_path |
6 | dd 0,cur_dir_path |
Line 7... | Line 7... | ||
7 | 7 | ||
8 | include '../../../../../proc32.inc' |
8 | include '../../../../../proc32.inc' |
- | 9 | include '../../../../../macros.inc' |
|
9 | include '../../../../../macros.inc' |
10 | include '../../../../../KOSfuncs.inc' |
10 | include '../../../../../develop/libraries/box_lib/load_lib.mac' |
11 | include '../../../../../develop/libraries/box_lib/load_lib.mac' |
11 | include '../../../../../dll.inc' |
12 | include '../../../../../dll.inc' |
12 | include '../opengl_const.inc' |
13 | include '../opengl_const.inc' |
Line 25... | Line 26... | ||
25 | ends |
26 | ends |
Line 26... | Line 27... | ||
26 | 27 | ||
27 | image_data dd 0 ;указатель на временную память, нужен для преобразования изображения |
28 | image_data dd 0 ;указатель на временную память, нужен для преобразования изображения |
28 | image_data_toolbar dd 0 |
29 | image_data_toolbar dd 0 |
- | 30 | IMAGE_FILE1_SIZE equ 128*144*3+54 ;размер файла с изображением |
|
- | 31 | IMAGE_TOOLBAR_ICON_SIZE equ 256*3 |
|
Line 29... | Line 32... | ||
29 | IMAGE_FILE1_SIZE equ 128*144*3+54 ;размер файла с изображением |
32 | IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*3+54 |
30 | 33 | ||
31 | macro load_image_file path,buf,size { ;макрос для загрузки изображений |
34 | macro load_image_file path,buf,size { ;макрос для загрузки изображений |
32 | ;path - может быть переменной или строковым параметром |
35 | ;path - может быть переменной или строковым параметром |
Line 41... | Line 44... | ||
41 | else |
44 | else |
42 | copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой |
45 | copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой |
43 | end if |
46 | end if |
44 | stdcall mem.Alloc, dword size ;выделяем память для изображения |
47 | stdcall mem.Alloc, dword size ;выделяем память для изображения |
45 | mov [buf],eax |
48 | mov [buf],eax |
46 | mov [run_file_70.Function], 0 |
49 | mov [run_file_70.Function], SSF_READ_FILE |
47 | mov [run_file_70.Position], 0 |
50 | mov [run_file_70.Position], 0 |
48 | mov [run_file_70.Flags], 0 |
51 | mov [run_file_70.Flags], 0 |
49 | mov [run_file_70.Count], dword size |
52 | mov [run_file_70.Count], dword size |
50 | mov [run_file_70.Buffer], eax |
53 | mov [run_file_70.Buffer], eax |
51 | mov byte[run_file_70+20], 0 |
54 | mov byte[run_file_70+20], 0 |
52 | mov [run_file_70.FileName], file_name |
55 | mov [run_file_70.FileName], file_name |
53 | mcall 70,run_file_70 ;загружаем файл изображения |
56 | mcall SF_FILE,run_file_70 ;загружаем файл изображения |
54 | cmp ebx,0xffffffff |
57 | cmp ebx,0xffffffff |
55 | je @f |
58 | je @f |
56 | ;определяем вид изображения и переводим его во временный буфер image_data |
59 | ;определяем вид изображения и переводим его во временный буфер image_data |
57 | stdcall dword[img_decode], dword[buf],ebx,0 |
60 | stdcall dword[img_decode], dword[buf],ebx,0 |
58 | mov dword[image_data],eax |
61 | mov dword[image_data],eax |
Line 71... | Line 74... | ||
71 | ;проверка на сколько удачно загузились библиотеки |
74 | ;проверка на сколько удачно загузились библиотеки |
72 | mov ebp,lib_0 |
75 | mov ebp,lib_0 |
73 | .test_lib_open: |
76 | .test_lib_open: |
74 | cmp dword [ebp+ll_struc_size-4],0 |
77 | cmp dword [ebp+ll_struc_size-4],0 |
75 | jz @f |
78 | jz @f |
76 | mcall -1 ;exit not correct |
79 | mcall SF_TERMINATE_PROCESS |
77 | @@: |
80 | @@: |
78 | add ebp,ll_struc_size |
81 | add ebp,ll_struc_size |
79 | cmp ebp,l_libs_end |
82 | cmp ebp,l_libs_end |
80 | jl .test_lib_open |
83 | jl .test_lib_open |
Line -... | Line 84... | ||
- | 84 | ||
81 | 85 | mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new |
|
Line 82... | Line 86... | ||
82 | mcall 40,0x27 |
86 | mcall SF_SET_EVENTS_MASK,0x27 |
83 | 87 | ||
84 | stdcall [kosglMakeCurrent], 10,10,[buf_ogl.w],[buf_ogl.h],ctx1 |
88 | stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1 |
85 | stdcall [glEnable], GL_DEPTH_TEST |
89 | stdcall [glEnable], GL_DEPTH_TEST |
86 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
90 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
Line 98... | Line 102... | ||
98 | load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE |
102 | load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE |
99 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
103 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
100 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
104 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
101 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
105 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
102 | stdcall [buf2d_convert_text_matrix], buf_1 |
106 | stdcall [buf2d_convert_text_matrix], buf_1 |
- | 107 | ||
- | 108 | load_image_file 'toolb_1.png', image_data_toolbar,IMAGE_TOOLBAR_SIZE |
|
103 | call draw_3d |
109 | call draw_3d |
Line 104... | Line 110... | ||
104 | 110 | ||
105 | align 4 |
111 | align 4 |
106 | red_win: |
112 | red_win: |
Line 107... | Line 113... | ||
107 | call draw_window |
113 | call draw_window |
108 | 114 | ||
109 | align 4 |
115 | align 4 |
110 | still: |
116 | still: |
111 | mcall 10 |
117 | mcall SF_WAIT_EVENT |
112 | cmp al,1 |
118 | cmp al,1 |
113 | jz red_win |
119 | jz red_win |
114 | cmp al,2 |
120 | cmp al,2 |
Line 118... | Line 124... | ||
118 | jmp still |
124 | jmp still |
Line 119... | Line 125... | ||
119 | 125 | ||
120 | align 4 |
126 | align 4 |
121 | draw_window: |
127 | draw_window: |
122 | pushad |
128 | pushad |
- | 129 | mcall SF_REDRAW,SSF_BEGIN_DRAW |
|
Line 123... | Line 130... | ||
123 | mcall 12,1 |
130 | mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption |
- | 131 | ||
- | 132 | mov esi,[sc.work_button] |
|
124 | 133 | mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3 ;вершины вкл. |
|
- | 134 | mcall ,(30 shl 16)+20,,4 ;каркасные грани вкл. |
|
- | 135 | mcall ,(55 shl 16)+20,,5 ;сплошные грани вкл. |
|
- | 136 | ||
- | 137 | mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;вершины вкл. |
|
125 | mov edx,0x33ffffff ;0x73ffffff |
138 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
- | 139 | mcall ,,,(32 shl 16)+7 ;каркасные грани вкл. |
|
Line -... | Line 140... | ||
- | 140 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
|
126 | mcall 0,(50 shl 16)+430,(30 shl 16)+400,,,caption |
141 | mcall ,,,(57 shl 16)+7 ;сплошные грани вкл. |
127 | stdcall [kosglSwapBuffers] |
142 | |
128 | 143 | stdcall [kosglSwapBuffers] |
|
Line 129... | Line 144... | ||
129 | mcall 12,2 |
144 | mcall SF_REDRAW,SSF_END_DRAW |
130 | popad |
145 | popad |
131 | ret |
146 | ret |
Line 132... | Line 147... | ||
132 | 147 | ||
133 | align 4 |
148 | align 4 |
Line 134... | Line 149... | ||
134 | key: |
149 | key: |
Line 224... | Line 239... | ||
224 | 239 | ||
Line 225... | Line 240... | ||
225 | jmp still |
240 | jmp still |
226 | 241 | ||
- | 242 | align 4 |
|
- | 243 | button: |
|
227 | align 4 |
244 | mcall SF_GET_BUTTON |
- | 245 | cmp ah,3 |
|
- | 246 | jne @f |
|
- | 247 | call but_st_point |
|
- | 248 | jmp still |
|
- | 249 | @@: |
|
- | 250 | cmp ah,4 |
|
- | 251 | jne @f |
|
- | 252 | call but_st_line |
|
- | 253 | jmp still |
|
- | 254 | @@: |
|
- | 255 | cmp ah,5 |
|
- | 256 | jne @f |
|
- | 257 | call but_st_face |
|
228 | button: |
258 | jmp still |
229 | mcall 17 |
259 | @@: |
230 | cmp ah,1 |
260 | cmp ah,1 |
231 | jne still |
261 | jne still |
232 | .exit: |
262 | .exit: |
- | 263 | stdcall [gluDeleteQuadric], [qObj] |
|
- | 264 | stdcall mem.Free,[image_data_toolbar] |
|
- | 265 | mcall SF_TERMINATE_PROCESS |
|
- | 266 | ||
- | 267 | align 4 |
|
- | 268 | but_st_point: |
|
- | 269 | stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT |
|
- | 270 | call draw_3d |
|
- | 271 | stdcall [kosglSwapBuffers] |
|
- | 272 | ret |
|
- | 273 | ||
- | 274 | align 4 |
|
233 | stdcall [gluDeleteQuadric], [qObj] |
275 | but_st_line: |
- | 276 | stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE |
|
- | 277 | call draw_3d |
|
- | 278 | stdcall [kosglSwapBuffers] |
|
- | 279 | ret |
|
- | 280 | ||
- | 281 | align 4 |
|
- | 282 | but_st_face: |
|
- | 283 | stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL |
|
- | 284 | call draw_3d |
|
Line 234... | Line 285... | ||
234 | ;stdcall mem.Free,[image_data_toolbar] |
285 | stdcall [kosglSwapBuffers] |
235 | mcall -1 |
286 | ret |
236 | 287 | ||
Line 482... | Line 533... | ||
482 | l_libs_end: |
533 | l_libs_end: |
Line 483... | Line 534... | ||
483 | 534 | ||
484 | align 4 |
535 | align 4 |
485 | i_end: |
536 | i_end: |
- | 537 | run_file_70 FileInfoBlock |
|
- | 538 | sc system_colors |
|
486 | run_file_70 FileInfoBlock |
539 | rb sizeof.sys_colors_new-sizeof.system_colors |
487 | align 16 |
540 | align 16 |
488 | rb 4096 |
541 | rb 4096 |
489 | stacktop: |
542 | stacktop: |
490 | cur_dir_path rb 4096 |
543 | cur_dir_path rb 4096 |