Subversion Repositories Kolibri OS

Rev

Rev 6737 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6737 Rev 8174
Line 1... Line 1...
1
use32
1
use32
2
	org 0x0
2
	org 0
3
	db 'MENUET01'
3
	db 'MENUET01'
4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
Line 5... Line 5...
5
 
5
 
6
include '../../../../../proc32.inc'
6
include '../../../../../proc32.inc'
7
include '../../../../../macros.inc'
7
include '../../../../../macros.inc'
8
include '../../../../../KOSfuncs.inc'
8
include '../../../../../KOSfuncs.inc'
9
include '../../../../../load_img.inc'
9
include '../../../../../load_img.inc'
-
 
10
include '../opengl_const.inc'
10
include '../opengl_const.inc'
11
include '../zbuffer.inc'
Line 11... Line 12...
11
include '../../../../../develop/info3ds/info_fun_float.inc'
12
include '../../../../../develop/info3ds/info_fun_float.inc'
Line 12... Line 13...
12
 
13
 
13
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
14
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
14
 
15
 
Line -... Line 16...
-
 
16
align 4
-
 
17
image_data_toolbar dd 0
15
align 4
18
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
-
 
19
 
-
 
20
;Макрос для параметров типа double (8 байт)
Line 16... Line 21...
16
image_data_toolbar dd 0
21
macro glpush GLDoubleVar {
17
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
22
	push dword[GLDoubleVar+4]
18
 
23
	push dword[GLDoubleVar]
19
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
24
}
Line 36... Line 41...
36
	mcall SF_SET_EVENTS_MASK,0x27
41
	mcall SF_SET_EVENTS_MASK,0x27
Line 37... Line 42...
37
 
42
 
38
	stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
43
	stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
39
	stdcall [glEnable], GL_DEPTH_TEST
44
	stdcall [glEnable], GL_DEPTH_TEST
40
	stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
45
	stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
41
	stdcall [gluNewQuadric]
46
	call [gluNewQuadric]
Line 42... Line 47...
42
	mov [qObj],eax
47
	mov [qObj],eax
43
 
48
 
Line 44... Line 49...
44
	stdcall [glClearColor], 0.25,0.25,0.25,0.0
49
	stdcall [glClearColor], 0.25,0.25,0.25,0.0
45
	stdcall [glShadeModel], GL_SMOOTH
50
	stdcall [glShadeModel], GL_SMOOTH
46
 
51
 
47
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
52
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
Line 48... Line 53...
48
	mov eax,[eax] ;eax -> ZBuffer
53
	mov eax,[eax] ;eax -> ZBuffer
49
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
54
	mov eax,[eax+ZBuffer.pbuf]
50
	mov dword[buf_ogl],eax
55
	mov dword[buf_ogl],eax
Line 94... Line 99...
94
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
99
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
95
	mcall ,,,(95 shl 16)+5 ;масштаб +
100
	mcall ,,,(95 shl 16)+5 ;масштаб +
96
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
101
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
97
	mcall ,,,(125 shl 16)+5 ;масштаб -
102
	mcall ,,,(125 shl 16)+5 ;масштаб -
Line 98... Line 103...
98
 
103
 
99
	stdcall [kosglSwapBuffers]
104
	call [kosglSwapBuffers]
100
	mcall SF_REDRAW,SSF_END_DRAW
105
	mcall SF_REDRAW,SSF_END_DRAW
101
	popad
106
	popad
Line 102... Line 107...
102
	ret
107
	ret
Line 128... Line 133...
128
		fstp qword[Data_Double]
133
		fstp qword[Data_Double]
129
		call DoubleFloat_to_String
134
		call DoubleFloat_to_String
130
		mov byte[txt_angle_y.v],0
135
		mov byte[txt_angle_y.v],0
131
		stdcall str_cat, txt_angle_y.v,Data_String
136
		stdcall str_cat, txt_angle_y.v,Data_String
132
		call draw_3d
137
		call draw_3d
133
		stdcall [kosglSwapBuffers]
138
		call [kosglSwapBuffers]
-
 
139
		jmp still
134
	@@:
140
	@@:
135
	cmp ah,177 ;Down
141
	cmp ah,177 ;Down
136
	jne @f
142
	jne @f
137
		finit
143
		finit
138
		fld dword[angle_y]
144
		fld dword[angle_y]
Line 142... Line 148...
142
		fstp qword[Data_Double]
148
		fstp qword[Data_Double]
143
		call DoubleFloat_to_String
149
		call DoubleFloat_to_String
144
		mov byte[txt_angle_y.v],0
150
		mov byte[txt_angle_y.v],0
145
		stdcall str_cat, txt_angle_y.v,Data_String
151
		stdcall str_cat, txt_angle_y.v,Data_String
146
		call draw_3d
152
		call draw_3d
147
		stdcall [kosglSwapBuffers]
153
		call [kosglSwapBuffers]
-
 
154
		jmp still
148
	@@:
155
	@@:
149
	cmp ah,176 ;Left
156
	cmp ah,176 ;Left
150
	jne @f
157
	jne @f
151
		finit
158
		finit
152
		fld dword[angle_z]
159
		fld dword[angle_z]
Line 156... Line 163...
156
		fstp qword[Data_Double]
163
		fstp qword[Data_Double]
157
		call DoubleFloat_to_String
164
		call DoubleFloat_to_String
158
		mov byte[txt_angle_z.v],0
165
		mov byte[txt_angle_z.v],0
159
		stdcall str_cat, txt_angle_z.v,Data_String
166
		stdcall str_cat, txt_angle_z.v,Data_String
160
		call draw_3d
167
		call draw_3d
161
		stdcall [kosglSwapBuffers]
168
		call [kosglSwapBuffers]
-
 
169
		jmp still
162
	@@:
170
	@@:
163
	cmp ah,179 ;Right
171
	cmp ah,179 ;Right
164
	jne @f
172
	jne @f
165
		finit
173
		finit
166
		fld dword[angle_z]
174
		fld dword[angle_z]
Line 170... Line 178...
170
		fstp qword[Data_Double]
178
		fstp qword[Data_Double]
171
		call DoubleFloat_to_String
179
		call DoubleFloat_to_String
172
		mov byte[txt_angle_z.v],0
180
		mov byte[txt_angle_z.v],0
173
		stdcall str_cat, txt_angle_z.v,Data_String
181
		stdcall str_cat, txt_angle_z.v,Data_String
174
		call draw_3d
182
		call draw_3d
175
		stdcall [kosglSwapBuffers]
183
		call [kosglSwapBuffers]
-
 
184
		;jmp still
176
	@@:
185
	@@:
Line 177... Line 186...
177
 
186
 
Line 178... Line 187...
178
	jmp still
187
	jmp still
Line 214... Line 223...
214
 
223
 
215
align 4
224
align 4
216
but_st_point:
225
but_st_point:
217
	stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
226
	stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
218
	call draw_3d
227
	call draw_3d
219
	stdcall [kosglSwapBuffers]
228
	call [kosglSwapBuffers]
Line 220... Line 229...
220
	ret
229
	ret
221
 
230
 
222
align 4
231
align 4
223
but_st_line:
232
but_st_line:
224
	stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE
233
	stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE
225
	call draw_3d
234
	call draw_3d
Line 226... Line 235...
226
	stdcall [kosglSwapBuffers]
235
	call [kosglSwapBuffers]
227
	ret
236
	ret
228
 
237
 
229
align 4
238
align 4
230
but_st_face:
239
but_st_face:
231
	stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL
240
	stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL
Line 232... Line 241...
232
	call draw_3d
241
	call draw_3d
233
	stdcall [kosglSwapBuffers]
242
	call [kosglSwapBuffers]
234
	ret
243
	ret
Line 251... Line 260...
251
	fstp qword[Data_Double]
260
	fstp qword[Data_Double]
252
	call DoubleFloat_to_String
261
	call DoubleFloat_to_String
253
	mov byte[txt_scale.v],0
262
	mov byte[txt_scale.v],0
254
	stdcall str_cat, txt_scale.v,Data_String
263
	stdcall str_cat, txt_scale.v,Data_String
255
	call draw_3d
264
	call draw_3d
256
	stdcall [kosglSwapBuffers]
265
	call [kosglSwapBuffers]
257
	ret
266
	ret
Line 258... Line 267...
258
 
267
 
259
align 4
268
align 4
260
but_zoom_m:
269
but_zoom_m:
Line 274... Line 283...
274
	fstp qword[Data_Double]
283
	fstp qword[Data_Double]
275
	call DoubleFloat_to_String
284
	call DoubleFloat_to_String
276
	mov byte[txt_scale.v],0
285
	mov byte[txt_scale.v],0
277
	stdcall str_cat, txt_scale.v,Data_String
286
	stdcall str_cat, txt_scale.v,Data_String
278
	call draw_3d
287
	call draw_3d
279
	stdcall [kosglSwapBuffers]
288
	call [kosglSwapBuffers]
280
	ret
289
	ret
Line 281... Line 290...
281
 
290
 
282
 
291
 
283
align 4
-
 
284
caption db 'Test gluCylinder, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
-
 
285
align 4
-
 
Line -... Line 292...
-
 
292
align 4
286
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
293
caption db 'Test gluCylinder, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
287
;sizeof.TinyGLContext = 28
294
 
288
 
295
align 4
289
rad1 dq 1.0
296
rad1 dq 1.0
290
rad2 dq 0.55
297
rad2 dq 0.55
Line 291... Line 298...
291
rad3 dq 0.15
298
rad3 dq 0.15
292
hei1 dq 2.0 ;высота цилиндра
299
hei1 dq 2.0 ;высота цилиндра
293
hei2 dq 1.25
300
hei2 dq 1.25
Line 294... Line 301...
294
 
301
 
295
align 4
302
align 4
Line 296... Line 303...
296
draw_3d:
303
draw_3d:
297
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
304
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
298
 
305
 
Line 314... Line 321...
314
	stdcall [gluCylinder], [qObj], rad2,rad3,hei2, 16,8
321
	stdcall [gluCylinder], [qObj], rad2,rad3,hei2, 16,8
Line 315... Line 322...
315
 
322
 
316
	stdcall [glColor3f], 0.0, 0.0, 1.0
323
	stdcall [glColor3f], 0.0, 0.0, 1.0
317
	stdcall [glTranslatef], 3.2,0.0,0.0
324
	stdcall [glTranslatef], 3.2,0.0,0.0
318
	stdcall [gluCylinder], [qObj], rad2,rad3,hei2, 16,8
325
	stdcall [gluCylinder], [qObj], rad2,rad3,hei2, 16,8
Line 319... Line 326...
319
stdcall [glPopMatrix]
326
call [glPopMatrix]
320
 
327
 
321
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
328
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
322
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
329
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
Line 339... Line 346...
339
 
346
 
340
	stdcall [glEnable],GL_LIGHTING
347
	stdcall [glEnable],GL_LIGHTING
341
	stdcall [glEnable],GL_LIGHT0
348
	stdcall [glEnable],GL_LIGHT0
Line 342... Line -...
342
ret
-
 
343
 
-
 
344
qObj dd 0
349
ret
345
 
350
 
346
scale dd 0.4 ;начальный масштаб
351
scale dd 0.4 ;начальный масштаб
347
sc_delt dd 0.05 ;изменение масштаба при нажатии
352
sc_delt dd 0.05 ;изменение масштаба при нажатии
348
sc_min dd 0.1 ;минимальный масштаб
353
sc_min dd 0.1 ;минимальный масштаб
Line 430... Line 435...
430
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
435
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
Line 431... Line 436...
431
 
436
 
432
align 4
437
align 4
433
import_libimg:
438
import_libimg:
434
	dd alib_init1
439
	dd alib_init1
435
	img_is_img  dd aimg_is_img
440
;	img_is_img  dd aimg_is_img
436
	img_info    dd aimg_info
441
;	img_info    dd aimg_info
437
	img_from_file dd aimg_from_file
442
;	img_from_file dd aimg_from_file
438
	img_to_file dd aimg_to_file
443
;	img_to_file dd aimg_to_file
439
	img_from_rgb dd aimg_from_rgb
444
;	img_from_rgb dd aimg_from_rgb
440
	img_to_rgb  dd aimg_to_rgb
445
;	img_to_rgb  dd aimg_to_rgb
441
	img_to_rgb2 dd aimg_to_rgb2
446
	img_to_rgb2 dd aimg_to_rgb2
442
	img_decode  dd aimg_decode
447
	img_decode  dd aimg_decode
443
	img_encode  dd aimg_encode
448
;	img_encode  dd aimg_encode
444
	img_create  dd aimg_create
449
;	img_create  dd aimg_create
445
	img_destroy dd aimg_destroy
450
	img_destroy dd aimg_destroy
446
	img_destroy_layer dd aimg_destroy_layer
451
;	img_destroy_layer dd aimg_destroy_layer
447
	img_count   dd aimg_count
452
;	img_count   dd aimg_count
448
	img_lock_bits dd aimg_lock_bits
453
;	img_lock_bits dd aimg_lock_bits
449
	img_unlock_bits dd aimg_unlock_bits
454
;	img_unlock_bits dd aimg_unlock_bits
450
	img_flip    dd aimg_flip
455
;	img_flip    dd aimg_flip
451
	img_flip_layer dd aimg_flip_layer
456
;	img_flip_layer dd aimg_flip_layer
452
	img_rotate  dd aimg_rotate
457
;	img_rotate  dd aimg_rotate
453
	img_rotate_layer dd aimg_rotate_layer
458
;	img_rotate_layer dd aimg_rotate_layer
-
 
459
;	img_draw    dd aimg_draw
Line 454... Line 460...
454
	img_draw    dd aimg_draw
460
;	img_convert dd aimg_convert
455
 
461
 
456
	dd 0,0
462
	dd 0,0
457
	alib_init1   db 'lib_init',0
463
	alib_init1   db 'lib_init',0
458
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
464
;	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
459
	aimg_info    db 'img_info',0
465
;	aimg_info    db 'img_info',0
460
	aimg_from_file db 'img_from_file',0
466
;	aimg_from_file db 'img_from_file',0
461
	aimg_to_file db 'img_to_file',0
467
;	aimg_to_file db 'img_to_file',0
462
	aimg_from_rgb db 'img_from_rgb',0
468
;	aimg_from_rgb db 'img_from_rgb',0
463
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
469
;	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
464
	aimg_to_rgb2 db 'img_to_rgb2',0
470
	aimg_to_rgb2 db 'img_to_rgb2',0
465
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
471
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
466
	aimg_encode  db 'img_encode',0
472
;	aimg_encode  db 'img_encode',0
467
	aimg_create  db 'img_create',0
473
;	aimg_create  db 'img_create',0
468
	aimg_destroy db 'img_destroy',0
474
	aimg_destroy db 'img_destroy',0
469
	aimg_destroy_layer db 'img_destroy_layer',0
475
;	aimg_destroy_layer db 'img_destroy_layer',0
470
	aimg_count   db 'img_count',0
476
;	aimg_count   db 'img_count',0
471
	aimg_lock_bits db 'img_lock_bits',0
477
;	aimg_lock_bits db 'img_lock_bits',0
472
	aimg_unlock_bits db 'img_unlock_bits',0
478
;	aimg_unlock_bits db 'img_unlock_bits',0
473
	aimg_flip    db 'img_flip',0
479
;	aimg_flip    db 'img_flip',0
474
	aimg_flip_layer db 'img_flip_layer',0
480
;	aimg_flip_layer db 'img_flip_layer',0
475
	aimg_rotate  db 'img_rotate',0
481
;	aimg_rotate  db 'img_rotate',0
-
 
482
;	aimg_rotate_layer db 'img_rotate_layer',0
Line 476... Line 483...
476
	aimg_rotate_layer db 'img_rotate_layer',0
483
;	aimg_draw    db 'img_draw',0
477
	aimg_draw    db 'img_draw',0
484
;	aimg_convert db 'img_convert',0
478
 
485
 
479
;--------------------------------------------------
486
;--------------------------------------------------
480
system_dir_0 db '/sys/lib/'
487
system_dir_0 db '/sys/lib/'
481
lib_name_0 db 'tinygl.obj',0
488
lib_name_0 db 'tinygl.obj',0
482
system_dir_1 db '/sys/lib/'
489
system_dir_1 db '/sys/lib/'
483
lib_name_1 db 'buf2d.obj',0
490
lib_name_1 db 'buf2d.obj',0
484
system_dir_2 db '/sys/lib/'
491
system_dir_2 db '/sys/lib/'
485
lib_name_2 db 'libimg.obj',0
492
lib_name_2 db 'libimg.obj',0
486
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
493
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,'" -tE',0
487
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
494
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,'" -tE',0
488
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
495
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,'" -tE',0
489
head_f_i:
496
head_f_i:
490
head_f_l db 'System error',0
497
head_f_l db '"System error',0
491
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
498
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,'" -tE',0
Line 492... Line 499...
492
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
499
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,'" -tE',0
493
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
500
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
494
;--------------------------------------------------
501
;--------------------------------------------------
Line 536... Line 543...
536
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
543
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
537
l_libs_end:
544
l_libs_end:
Line 538... Line 545...
538
 
545
 
539
align 4
546
align 4
-
 
547
i_end:
-
 
548
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
540
i_end:
549
	qObj dd 0
541
	run_file_70 FileInfoBlock
550
	run_file_70 FileInfoBlock
542
	sc system_colors
551
	sc system_colors
543
align 16
552
align 16
544
	rb 4096
553
	rb 4096