Subversion Repositories Kolibri OS

Rev

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

Rev 6200 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 -... Line 13...
-
 
13
 
-
 
14
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
-
 
15
 
-
 
16
;Макрос для параметров типа double (8 байт)
-
 
17
macro glpush GLDoubleVar {
-
 
18
	push dword[GLDoubleVar+4]
12
 
19
	push dword[GLDoubleVar]
13
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
20
}
14
 
21
 
Line 15... Line -...
15
align 4
-
 
16
image_data_toolbar dd 0
-
 
17
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
22
align 4
18
 
23
image_data_toolbar dd 0
19
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
24
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
20
 
25
 
21
align 4
26
align 4
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]
42
	mov [qObj],eax
47
	mov [qObj],eax
43
	stdcall [gluQuadricDrawStyle], eax,GLU_FILL
48
	stdcall [gluQuadricDrawStyle], eax,GLU_FILL
Line 44... Line 49...
44
	stdcall [gluQuadricTexture], eax,GL_TRUE
49
	stdcall [gluQuadricTexture], eax,GL_TRUE
45
 
50
 
Line 46... Line 51...
46
	stdcall [glClearColor], 0.0,0.0,0.0,0.0
51
	stdcall [glClearColor], 0.0,0.0,0.0,0.0
47
	stdcall [glShadeModel], GL_SMOOTH
52
	stdcall [glShadeModel], GL_SMOOTH
48
 
53
 
49
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
54
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
Line 50... Line 55...
50
	mov eax,[eax] ;eax -> ZBuffer
55
	mov eax,[eax] ;eax -> ZBuffer
51
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
56
	mov eax,[eax+ZBuffer.pbuf]
52
	mov dword[buf_ogl],eax
57
	mov dword[buf_ogl],eax
Line 107... Line 112...
107
	add ebx,3*IMAGE_TOOLBAR_ICON_SIZE
112
	add ebx,3*IMAGE_TOOLBAR_ICON_SIZE
108
	mcall SF_PUT_IMAGE,,(21 shl 16)+21,(5 shl 16)+5 ;масштаб +
113
	mcall SF_PUT_IMAGE,,(21 shl 16)+21,(5 shl 16)+5 ;масштаб +
109
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
114
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
110
	mcall ,,,(35 shl 16)+5 ;масштаб -
115
	mcall ,,,(35 shl 16)+5 ;масштаб -
Line 111... Line 116...
111
 
116
 
112
	stdcall [kosglSwapBuffers]
117
	call [kosglSwapBuffers]
113
	mcall SF_REDRAW,SSF_END_DRAW
118
	mcall SF_REDRAW,SSF_END_DRAW
114
	popad
119
	popad
Line 115... Line 120...
115
	ret
120
	ret
Line 141... Line 146...
141
		fstp qword[Data_Double]
146
		fstp qword[Data_Double]
142
		call DoubleFloat_to_String
147
		call DoubleFloat_to_String
143
		mov byte[txt_angle_y.v],0
148
		mov byte[txt_angle_y.v],0
144
		stdcall str_cat, txt_angle_y.v,Data_String
149
		stdcall str_cat, txt_angle_y.v,Data_String
145
		call draw_3d
150
		call draw_3d
146
		stdcall [kosglSwapBuffers]
151
		call [kosglSwapBuffers]
147
	@@:
152
	@@:
148
	cmp ah,179 ;Right
153
	cmp ah,179 ;Right
149
	jne @f
154
	jne @f
150
		finit
155
		finit
151
		fld dword[angle_y]
156
		fld dword[angle_y]
Line 155... Line 160...
155
		fstp qword[Data_Double]
160
		fstp qword[Data_Double]
156
		call DoubleFloat_to_String
161
		call DoubleFloat_to_String
157
		mov byte[txt_angle_y.v],0
162
		mov byte[txt_angle_y.v],0
158
		stdcall str_cat, txt_angle_y.v,Data_String
163
		stdcall str_cat, txt_angle_y.v,Data_String
159
		call draw_3d
164
		call draw_3d
160
		stdcall [kosglSwapBuffers]
165
		call [kosglSwapBuffers]
161
	@@:
166
	@@:
162
	cmp ah,178 ;Up
167
	cmp ah,178 ;Up
163
	jne @f
168
	jne @f
164
		finit
169
		finit
165
		fld dword[angle_x]
170
		fld dword[angle_x]
Line 169... Line 174...
169
		fstp qword[Data_Double]
174
		fstp qword[Data_Double]
170
		call DoubleFloat_to_String
175
		call DoubleFloat_to_String
171
		mov byte[txt_angle_x.v],0
176
		mov byte[txt_angle_x.v],0
172
		stdcall str_cat, txt_angle_x.v,Data_String
177
		stdcall str_cat, txt_angle_x.v,Data_String
173
		call draw_3d
178
		call draw_3d
174
		stdcall [kosglSwapBuffers]
179
		call [kosglSwapBuffers]
175
	@@:
180
	@@:
176
	cmp ah,177 ;Down
181
	cmp ah,177 ;Down
177
	jne @f
182
	jne @f
178
		finit
183
		finit
179
		fld dword[angle_x]
184
		fld dword[angle_x]
Line 183... Line 188...
183
		fstp qword[Data_Double]
188
		fstp qword[Data_Double]
184
		call DoubleFloat_to_String
189
		call DoubleFloat_to_String
185
		mov byte[txt_angle_x.v],0
190
		mov byte[txt_angle_x.v],0
186
		stdcall str_cat, txt_angle_x.v,Data_String
191
		stdcall str_cat, txt_angle_x.v,Data_String
187
		call draw_3d
192
		call draw_3d
188
		stdcall [kosglSwapBuffers]
193
		call [kosglSwapBuffers]
189
	@@:
194
	@@:
Line 190... Line 195...
190
 
195
 
Line 191... Line 196...
191
	jmp still
196
	jmp still
Line 228... Line 233...
228
	fstp qword[Data_Double]
233
	fstp qword[Data_Double]
229
	call DoubleFloat_to_String
234
	call DoubleFloat_to_String
230
	mov byte[txt_scale.v],0
235
	mov byte[txt_scale.v],0
231
	stdcall str_cat, txt_scale.v,Data_String
236
	stdcall str_cat, txt_scale.v,Data_String
232
	call draw_3d
237
	call draw_3d
233
	stdcall [kosglSwapBuffers]
238
	call [kosglSwapBuffers]
234
	ret
239
	ret
Line 235... Line 240...
235
 
240
 
236
align 4
241
align 4
237
but_zoom_m:
242
but_zoom_m:
Line 251... Line 256...
251
	fstp qword[Data_Double]
256
	fstp qword[Data_Double]
252
	call DoubleFloat_to_String
257
	call DoubleFloat_to_String
253
	mov byte[txt_scale.v],0
258
	mov byte[txt_scale.v],0
254
	stdcall str_cat, txt_scale.v,Data_String
259
	stdcall str_cat, txt_scale.v,Data_String
255
	call draw_3d
260
	call draw_3d
256
	stdcall [kosglSwapBuffers]
261
	call [kosglSwapBuffers]
257
	ret
262
	ret
Line 258... Line -...
258
 
-
 
259
 
263
 
260
align 4
264
align 4
261
caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
-
 
262
align 4
-
 
263
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
-
 
Line 264... Line 265...
264
;sizeof.TinyGLContext = 28
265
caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
265
 
266
 
266
align 4
267
align 4
Line 267... Line 268...
267
draw_3d:
268
draw_3d:
268
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
269
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
269
 
270
 
270
stdcall [glPushMatrix]
271
call [glPushMatrix]
271
	stdcall [glScalef], [scale], [scale], [scale]
272
	stdcall [glScalef], [scale], [scale], [scale]
Line 272... Line 273...
272
	stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
273
	stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении
273
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
274
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
274
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
275
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
Line 275... Line 276...
275
 
276
 
276
	; рисование панорамы
277
	; рисование панорамы
277
	stdcall [gluSphere], [qObj], 1.0, 64,64
278
	stdcall [gluSphere], [qObj], 1.0, 64,64
278
stdcall [glPopMatrix]
279
call [glPopMatrix]
Line 279... Line -...
279
 
-
 
280
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
-
 
281
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,15,0xffff00
-
 
282
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_x,5,25,0xffff00
-
 
283
	ret
-
 
284
 
-
 
285
qObj dd 0
280
 
286
TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.)
281
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
287
texture dd 0 ;указатель на память с текстурой
282
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,15,0xffff00
288
text_w dd 0
283
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_x,5,25,0xffff00
289
text_h dd 0
284
	ret
Line 368... Line 363...
368
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
363
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
Line 369... Line 364...
369
 
364
 
370
align 4
365
align 4
371
import_libimg:
366
import_libimg:
372
	dd alib_init1
367
	dd alib_init1
373
	img_is_img  dd aimg_is_img
368
;	img_is_img  dd aimg_is_img
374
	img_info    dd aimg_info
369
;	img_info    dd aimg_info
375
	img_from_file dd aimg_from_file
370
;	img_from_file dd aimg_from_file
376
	img_to_file dd aimg_to_file
371
;	img_to_file dd aimg_to_file
377
	img_from_rgb dd aimg_from_rgb
372
;	img_from_rgb dd aimg_from_rgb
378
	img_to_rgb  dd aimg_to_rgb
373
;	img_to_rgb  dd aimg_to_rgb
379
	img_to_rgb2 dd aimg_to_rgb2
374
	img_to_rgb2 dd aimg_to_rgb2
380
	img_decode  dd aimg_decode
375
	img_decode  dd aimg_decode
381
	img_encode  dd aimg_encode
376
;	img_encode  dd aimg_encode
382
	img_create  dd aimg_create
377
;	img_create  dd aimg_create
383
	img_destroy dd aimg_destroy
378
	img_destroy dd aimg_destroy
384
	img_destroy_layer dd aimg_destroy_layer
379
;	img_destroy_layer dd aimg_destroy_layer
385
	img_count   dd aimg_count
380
;	img_count   dd aimg_count
386
	img_lock_bits dd aimg_lock_bits
381
;	img_lock_bits dd aimg_lock_bits
387
	img_unlock_bits dd aimg_unlock_bits
382
;	img_unlock_bits dd aimg_unlock_bits
388
	img_flip    dd aimg_flip
383
;	img_flip    dd aimg_flip
389
	img_flip_layer dd aimg_flip_layer
384
;	img_flip_layer dd aimg_flip_layer
390
	img_rotate  dd aimg_rotate
385
;	img_rotate  dd aimg_rotate
391
	img_rotate_layer dd aimg_rotate_layer
386
;	img_rotate_layer dd aimg_rotate_layer
-
 
387
;	img_draw    dd aimg_draw
Line 392... Line 388...
392
	img_draw    dd aimg_draw
388
;	img_convert dd aimg_convert
393
 
389
 
394
	dd 0,0
390
	dd 0,0
395
	alib_init1   db 'lib_init',0
391
	alib_init1   db 'lib_init',0
396
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
392
;	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
397
	aimg_info    db 'img_info',0
393
;	aimg_info    db 'img_info',0
398
	aimg_from_file db 'img_from_file',0
394
;	aimg_from_file db 'img_from_file',0
399
	aimg_to_file db 'img_to_file',0
395
;	aimg_to_file db 'img_to_file',0
400
	aimg_from_rgb db 'img_from_rgb',0
396
;	aimg_from_rgb db 'img_from_rgb',0
401
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
397
;	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
402
	aimg_to_rgb2 db 'img_to_rgb2',0
398
	aimg_to_rgb2 db 'img_to_rgb2',0
403
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
399
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
404
	aimg_encode  db 'img_encode',0
400
;	aimg_encode  db 'img_encode',0
405
	aimg_create  db 'img_create',0
401
;	aimg_create  db 'img_create',0
406
	aimg_destroy db 'img_destroy',0
402
	aimg_destroy db 'img_destroy',0
407
	aimg_destroy_layer db 'img_destroy_layer',0
403
;	aimg_destroy_layer db 'img_destroy_layer',0
408
	aimg_count   db 'img_count',0
404
;	aimg_count   db 'img_count',0
409
	aimg_lock_bits db 'img_lock_bits',0
405
;	aimg_lock_bits db 'img_lock_bits',0
410
	aimg_unlock_bits db 'img_unlock_bits',0
406
;	aimg_unlock_bits db 'img_unlock_bits',0
411
	aimg_flip    db 'img_flip',0
407
;	aimg_flip    db 'img_flip',0
412
	aimg_flip_layer db 'img_flip_layer',0
408
;	aimg_flip_layer db 'img_flip_layer',0
413
	aimg_rotate  db 'img_rotate',0
409
;	aimg_rotate  db 'img_rotate',0
-
 
410
;	aimg_rotate_layer db 'img_rotate_layer',0
Line 414... Line 411...
414
	aimg_rotate_layer db 'img_rotate_layer',0
411
;	aimg_draw    db 'img_draw',0
415
	aimg_draw    db 'img_draw',0
412
;	aimg_convert db 'img_convert',0
416
 
413
 
417
;--------------------------------------------------
414
;--------------------------------------------------
418
system_dir_0 db '/sys/lib/'
415
system_dir_0 db '/sys/lib/'
419
lib_name_0 db 'tinygl.obj',0
416
lib_name_0 db 'tinygl.obj',0
420
system_dir_1 db '/sys/lib/'
417
system_dir_1 db '/sys/lib/'
421
lib_name_1 db 'buf2d.obj',0
418
lib_name_1 db 'buf2d.obj',0
422
system_dir_2 db '/sys/lib/'
419
system_dir_2 db '/sys/lib/'
423
lib_name_2 db 'libimg.obj',0
420
lib_name_2 db 'libimg.obj',0
424
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
421
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,'" -tE',0
425
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
422
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,'" -tE',0
426
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
423
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,'" -tE',0
427
head_f_i:
424
head_f_i:
428
head_f_l db 'System error',0
425
head_f_l db '"System error',0
429
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
426
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,'" -tE',0
Line 430... Line 427...
430
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
427
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,'" -tE',0
431
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
428
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,'" -tE',0
432
;--------------------------------------------------
429
;--------------------------------------------------
Line 480... Line 477...
480
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
477
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
481
l_libs_end:
478
l_libs_end:
Line 482... Line 479...
482
 
479
 
483
align 4
480
align 4
-
 
481
i_end:
-
 
482
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
-
 
483
	qObj dd 0
-
 
484
	TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.)
-
 
485
	texture dd 0 ;указатель на память с текстурой
-
 
486
	text_w dd 0
484
i_end:
487
	text_h dd 0
485
	run_file_70 FileInfoBlock
488
	run_file_70 FileInfoBlock
486
	sc system_colors
489
	sc system_colors
487
align 16
490
align 16
488
	rb 4096
491
	rb 4096