Subversion Repositories Kolibri OS

Rev

Rev 6164 | Rev 6200 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6013 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01'
4
	dd 1,start,i_end
5
	dd mem,stacktop
6
	dd 0,cur_dir_path
7
 
8
include '../../../../../proc32.inc'
9
include '../../../../../macros.inc'
6100 IgorA 10
include '../../../../../KOSfuncs.inc'
6013 IgorA 11
include '../../../../../develop/libraries/box_lib/load_lib.mac'
12
include '../../../../../dll.inc'
13
include '../opengl_const.inc'
14
include '../../../../../develop/info3ds/info_fun_float.inc'
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 ?
26
ends
27
 
6189 IgorA 28
align 4
29
open_b rb 560
6013 IgorA 30
image_data_toolbar dd 0
6129 leency 31
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
6013 IgorA 32
 
6189 IgorA 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 ;выделяем память для изображения
6013 IgorA 64
	mov [buf],eax
6100 IgorA 65
	mov [run_file_70.Function], SSF_READ_FILE
6013 IgorA 66
	mov [run_file_70.Position], 0
67
	mov [run_file_70.Flags], 0
6189 IgorA 68
	mov [run_file_70.Count], ecx
6013 IgorA 69
	mov [run_file_70.Buffer], eax
70
	mov byte[run_file_70+20], 0
71
	mov [run_file_70.FileName], file_name
6100 IgorA 72
	mcall SF_FILE,run_file_70 ;загружаем файл изображения
6013 IgorA 73
	cmp ebx,0xffffffff
74
	je @f
6189 IgorA 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 ;удаляем временный буфер с параметрами изображения
6013 IgorA 96
	@@:
97
}
98
 
99
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
100
 
101
align 4
102
start:
103
load_libraries l_libs_start,l_libs_end
104
	;проверка на сколько удачно загузились библиотеки
105
	mov	ebp,lib_0
106
	.test_lib_open:
107
	cmp	dword [ebp+ll_struc_size-4],0
108
	jz	@f
6100 IgorA 109
		mcall SF_TERMINATE_PROCESS
6013 IgorA 110
	@@:
111
	add ebp,ll_struc_size
112
	cmp ebp,l_libs_end
113
	jl .test_lib_open
114
 
6164 leency 115
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
6100 IgorA 116
	mcall SF_SET_EVENTS_MASK,0x27
6013 IgorA 117
 
6100 IgorA 118
	stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1
6013 IgorA 119
	stdcall [glEnable], GL_DEPTH_TEST
120
	stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
121
	stdcall [gluNewQuadric]
122
	mov [qObj],eax
123
 
124
	stdcall [glClearColor], 0.25,0.25,0.25,0.0
125
	stdcall [glShadeModel], GL_SMOOTH
126
 
127
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
128
	mov eax,[eax] ;eax -> ZBuffer
129
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
130
	mov dword[buf_ogl],eax
131
 
6189 IgorA 132
	load_image_file 'font8x9.bmp', image_data_toolbar
6013 IgorA 133
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
134
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
135
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
136
	stdcall [buf2d_convert_text_matrix], buf_1
6100 IgorA 137
 
6189 IgorA 138
	load_image_file 'toolb_1.png', image_data_toolbar
6013 IgorA 139
	call draw_3d
140
 
141
align 4
142
red_win:
143
	call draw_window
144
 
145
align 4
146
still:
6100 IgorA 147
	mcall SF_WAIT_EVENT
6013 IgorA 148
	cmp al,1
149
	jz red_win
150
	cmp al,2
151
	jz key
152
	cmp al,3
153
	jz button
154
	jmp still
155
 
156
align 4
157
draw_window:
158
	pushad
6100 IgorA 159
	mcall SF_REDRAW,SSF_BEGIN_DRAW
160
	mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption
6013 IgorA 161
 
6100 IgorA 162
	mov esi,[sc.work_button]
6129 leency 163
	mcall SF_DEFINE_BUTTON,(6 shl 16)+19,(6 shl 16)+19,3+0x40000000 ;вершины вкл.
164
	mcall ,(36 shl 16)+19,,4+0x40000000 ;каркасные грани вкл.
165
	mcall ,(66 shl 16)+19,,5+0x40000000 ;сплошные грани вкл.
6189 IgorA 166
	mcall ,(96 shl 16)+19,,6+0x40000000 ;масштаб +
167
	mcall ,(126 shl 16)+19,,7+0x40000000 ;масштаб -
6100 IgorA 168
 
6129 leency 169
	mcall SF_PUT_IMAGE,[image_data_toolbar],(21 shl 16)+21,(5 shl 16)+5 ;вершины вкл.
6100 IgorA 170
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
6129 leency 171
	mcall ,,,(35 shl 16)+5 ;каркасные грани вкл.
6100 IgorA 172
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
6129 leency 173
	mcall ,,,(65 shl 16)+5 ;сплошные грани вкл.
6189 IgorA 174
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
175
	mcall ,,,(95 shl 16)+5 ;масштаб +
176
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
177
	mcall ,,,(125 shl 16)+5 ;масштаб -
6100 IgorA 178
 
6013 IgorA 179
	stdcall [kosglSwapBuffers]
6100 IgorA 180
	mcall SF_REDRAW,SSF_END_DRAW
6013 IgorA 181
	popad
182
	ret
183
 
184
align 4
185
key:
6100 IgorA 186
	mcall SF_GET_KEY
6013 IgorA 187
 
188
	cmp ah,27 ;Esc
189
	je button.exit
190
 
191
	cmp ah,61 ;+
192
	jne @f
6189 IgorA 193
		call but_zoom_p
194
		jmp still
6013 IgorA 195
	@@:
196
	cmp ah,45 ;-
197
	jne @f
6189 IgorA 198
		call but_zoom_m
199
		jmp still
6013 IgorA 200
	@@:
201
	cmp ah,178 ;Up
202
	jne @f
203
		finit
204
		fld dword[angle_y]
205
		fadd dword[delt_size]
206
		fst dword[angle_y]
207
		mov word[NumberSymbolsAD],2
208
		fstp qword[Data_Double]
209
		call DoubleFloat_to_String
210
		mov byte[txt_angle_y.v],0
211
		stdcall str_cat, txt_angle_y.v,Data_String
212
		call draw_3d
213
		stdcall [kosglSwapBuffers]
214
	@@:
215
	cmp ah,177 ;Down
216
	jne @f
217
		finit
218
		fld dword[angle_y]
219
		fsub dword[delt_size]
220
		fst dword[angle_y]
221
		mov word[NumberSymbolsAD],2
222
		fstp qword[Data_Double]
223
		call DoubleFloat_to_String
224
		mov byte[txt_angle_y.v],0
225
		stdcall str_cat, txt_angle_y.v,Data_String
226
		call draw_3d
227
		stdcall [kosglSwapBuffers]
228
	@@:
229
	cmp ah,176 ;Left
230
	jne @f
231
		finit
232
		fld dword[angle_z]
233
		fadd dword[delt_size]
234
		fst dword[angle_z]
235
		mov word[NumberSymbolsAD],2
236
		fstp qword[Data_Double]
237
		call DoubleFloat_to_String
238
		mov byte[txt_angle_z.v],0
239
		stdcall str_cat, txt_angle_z.v,Data_String
240
		call draw_3d
241
		stdcall [kosglSwapBuffers]
242
	@@:
243
	cmp ah,179 ;Right
244
	jne @f
245
		finit
246
		fld dword[angle_z]
247
		fsub dword[delt_size]
248
		fst dword[angle_z]
249
		mov word[NumberSymbolsAD],2
250
		fstp qword[Data_Double]
251
		call DoubleFloat_to_String
252
		mov byte[txt_angle_z.v],0
253
		stdcall str_cat, txt_angle_z.v,Data_String
254
		call draw_3d
255
		stdcall [kosglSwapBuffers]
256
	@@:
257
 
258
	jmp still
259
 
260
align 4
261
button:
6100 IgorA 262
	mcall SF_GET_BUTTON
263
	cmp ah,3
264
	jne @f
265
		call but_st_point
266
		jmp still
267
	@@:
268
	cmp ah,4
269
	jne @f
270
		call but_st_line
271
		jmp still
272
	@@:
273
	cmp ah,5
274
	jne @f
275
		call but_st_face
276
		jmp still
277
	@@:
6189 IgorA 278
	cmp ah,6
279
	jne @f
280
		call but_zoom_p
281
		jmp still
282
	@@:
283
	cmp ah,7
284
	jne @f
285
		call but_zoom_m
286
		jmp still
287
	@@:
6013 IgorA 288
	cmp ah,1
289
	jne still
290
.exit:
291
	stdcall [gluDeleteQuadric], [qObj]
6100 IgorA 292
	stdcall mem.Free,[image_data_toolbar]
293
	mcall SF_TERMINATE_PROCESS
6013 IgorA 294
 
6100 IgorA 295
align 4
296
but_st_point:
297
	stdcall [gluQuadricDrawStyle], [qObj],GLU_POINT
298
	call draw_3d
299
	stdcall [kosglSwapBuffers]
300
	ret
6013 IgorA 301
 
302
align 4
6100 IgorA 303
but_st_line:
304
	stdcall [gluQuadricDrawStyle], [qObj],GLU_LINE
305
	call draw_3d
306
	stdcall [kosglSwapBuffers]
307
	ret
308
 
309
align 4
310
but_st_face:
311
	stdcall [gluQuadricDrawStyle], [qObj],GLU_FILL
312
	call draw_3d
313
	stdcall [kosglSwapBuffers]
314
	ret
315
 
6189 IgorA 316
align 4
317
but_zoom_p:
318
	finit
319
	fld dword[scale]
320
	fadd dword[delt_sc]
321
	fst dword[scale]
322
	mov word[NumberSymbolsAD],3
323
	fstp qword[Data_Double]
324
	call DoubleFloat_to_String
325
	mov byte[txt_scale.v],0
326
	stdcall str_cat, txt_scale.v,Data_String
327
	call draw_3d
328
	stdcall [kosglSwapBuffers]
329
	ret
6100 IgorA 330
 
331
align 4
6189 IgorA 332
but_zoom_m:
333
	finit
334
	fld dword[scale]
335
	fsub dword[delt_sc]
336
	fst dword[scale]
337
	mov word[NumberSymbolsAD],3
338
	fstp qword[Data_Double]
339
	call DoubleFloat_to_String
340
	mov byte[txt_scale.v],0
341
	stdcall str_cat, txt_scale.v,Data_String
342
	call draw_3d
343
	stdcall [kosglSwapBuffers]
344
	ret
345
 
346
 
347
align 4
6013 IgorA 348
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
349
align 4
350
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
351
;sizeof.TinyGLContext = 28
352
 
353
align 4
354
draw_3d:
355
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
356
 
357
stdcall [glPushMatrix]
358
	call SetLight
359
 
360
	stdcall [glTranslatef], 0.0,0.0,0.5
361
	stdcall [glScalef], [scale], [scale], [scale]
362
 
363
	stdcall [glColor3f], 1.0, 1.0, 0.0
364
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
365
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
366
	stdcall [gluSphere], [qObj], 1.0, 32,32
367
 
368
	stdcall [glColor3f], 1.0, 0.0, 0.0
369
	stdcall [glTranslatef], -1.6,0.0,0.0
370
	stdcall [gluSphere], [qObj], 0.55, 16,16
371
 
372
	stdcall [glColor3f], 0.0, 0.0, 1.0
373
	stdcall [glTranslatef], 3.2,0.0,0.0
374
	stdcall [gluSphere], [qObj], 0.55, 16,16
375
stdcall [glPopMatrix]
376
 
377
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00
378
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_z,5,15,0xffff00
379
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,25,0xffff00
380
	ret
381
 
382
align 4
383
SetLight:
384
	stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
385
	stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
386
 
387
	stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
388
	stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
389
 
390
	stdcall [glEnable], GL_COLOR_MATERIAL
391
	stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
392
	stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
393
	stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
394
	stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
395
 
396
	stdcall [glEnable],GL_LIGHTING
397
	stdcall [glEnable],GL_LIGHT0
398
ret
399
 
400
qObj dd 0
401
 
402
scale dd 0.4
403
delt_sc dd 0.05
404
angle_z dd 0.0
405
angle_y dd 0.0
406
delt_size dd 3.0
407
 
408
light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
409
	;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
410
light_dir dd 0.0,0.0,0.0 ;направление лампы
411
mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
412
mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
413
white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
414
lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
415
 
416
;--------------------------------------------------
417
align 4
418
import_lib_tinygl:
419
 
420
macro E_LIB n
421
{
422
	n dd sz_#n
423
}
424
include '../export.inc'
425
	dd 0,0
426
macro E_LIB n
427
{
428
	sz_#n db `n,0
429
}
430
include '../export.inc'
431
 
432
align 4
433
import_buf2d:
434
	dd sz_init0
435
	buf2d_create dd sz_buf2d_create
436
	buf2d_create_f_img dd sz_buf2d_create_f_img
437
	buf2d_clear dd sz_buf2d_clear
438
	buf2d_draw dd sz_buf2d_draw
439
	buf2d_delete dd sz_buf2d_delete
440
	buf2d_resize dd sz_buf2d_resize
441
	buf2d_line dd sz_buf2d_line
442
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
443
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
444
	buf2d_circle dd sz_buf2d_circle
445
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
446
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
447
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
448
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
449
	buf2d_bit_blt dd sz_buf2d_bit_blt
450
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
451
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
452
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
453
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
454
	buf2d_draw_text dd sz_buf2d_draw_text
455
	buf2d_crop_color dd sz_buf2d_crop_color
456
	buf2d_offset_h dd sz_buf2d_offset_h
457
	buf2d_flood_fill dd sz_buf2d_flood_fill
458
	buf2d_set_pixel dd sz_buf2d_set_pixel
459
	dd 0,0
460
	sz_init0 db 'lib_init',0
461
	sz_buf2d_create db 'buf2d_create',0
462
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
463
	sz_buf2d_clear db 'buf2d_clear',0
464
	sz_buf2d_draw db 'buf2d_draw',0
465
	sz_buf2d_delete db 'buf2d_delete',0
466
	sz_buf2d_resize db 'buf2d_resize',0
467
	sz_buf2d_line db 'buf2d_line',0
468
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
469
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
470
	sz_buf2d_circle db 'buf2d_circle',0
471
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
472
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
473
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
474
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
475
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
476
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
477
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
478
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
479
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
480
	sz_buf2d_draw_text db 'buf2d_draw_text',0
481
	sz_buf2d_crop_color db 'buf2d_crop_color',0
482
	sz_buf2d_offset_h db 'buf2d_offset_h',0
483
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
484
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
485
 
486
align 4
487
import_libimg:
488
	dd alib_init1
489
	img_is_img  dd aimg_is_img
490
	img_info    dd aimg_info
491
	img_from_file dd aimg_from_file
492
	img_to_file dd aimg_to_file
493
	img_from_rgb dd aimg_from_rgb
494
	img_to_rgb  dd aimg_to_rgb
495
	img_to_rgb2 dd aimg_to_rgb2
496
	img_decode  dd aimg_decode
497
	img_encode  dd aimg_encode
498
	img_create  dd aimg_create
499
	img_destroy dd aimg_destroy
500
	img_destroy_layer dd aimg_destroy_layer
501
	img_count   dd aimg_count
502
	img_lock_bits dd aimg_lock_bits
503
	img_unlock_bits dd aimg_unlock_bits
504
	img_flip    dd aimg_flip
505
	img_flip_layer dd aimg_flip_layer
506
	img_rotate  dd aimg_rotate
507
	img_rotate_layer dd aimg_rotate_layer
508
	img_draw    dd aimg_draw
509
 
510
	dd 0,0
511
	alib_init1   db 'lib_init',0
512
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
513
	aimg_info    db 'img_info',0
514
	aimg_from_file db 'img_from_file',0
515
	aimg_to_file db 'img_to_file',0
516
	aimg_from_rgb db 'img_from_rgb',0
517
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
518
	aimg_to_rgb2 db 'img_to_rgb2',0
519
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
520
	aimg_encode  db 'img_encode',0
521
	aimg_create  db 'img_create',0
522
	aimg_destroy db 'img_destroy',0
523
	aimg_destroy_layer db 'img_destroy_layer',0
524
	aimg_count   db 'img_count',0
525
	aimg_lock_bits db 'img_lock_bits',0
526
	aimg_unlock_bits db 'img_unlock_bits',0
527
	aimg_flip    db 'img_flip',0
528
	aimg_flip_layer db 'img_flip_layer',0
529
	aimg_rotate  db 'img_rotate',0
530
	aimg_rotate_layer db 'img_rotate_layer',0
531
	aimg_draw    db 'img_draw',0
532
 
533
;--------------------------------------------------
534
system_dir_0 db '/sys/lib/'
535
lib_name_0 db 'tinygl.obj',0
536
system_dir_1 db '/sys/lib/'
537
lib_name_1 db 'buf2d.obj',0
538
system_dir_2 db '/sys/lib/'
539
lib_name_2 db 'libimg.obj',0
540
err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0
541
err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0
542
err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0
543
head_f_i:
544
head_f_l db 'System error',0
545
err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0
546
err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0
547
err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0
548
;--------------------------------------------------
549
 
550
txt_scale:
551
db 'Scale: '
552
.v:
553
db 0
554
rb 10
555
 
556
txt_angle_z:
557
db 'Rotate z: '
558
.v:
559
db 0
560
rb 10
561
 
562
txt_angle_y:
563
db 'Rotate y: '
564
.v:
565
db 0
566
rb 10
567
 
568
align 4
569
buf_ogl:
570
	dd 0 ;указатель на буфер изображения
571
	dw 10,10 ;+4 left,top
572
.w: dd 400
573
.h: dd 350
574
	dd 0,24 ;+16 color,bit in pixel
575
 
576
align 4
577
buf_1:
578
	dd 0 ;указатель на буфер изображения
579
	dw 25,25 ;+4 left,top
580
	dd 128,144 ;+8 w,h
581
	dd 0,24 ;+16 color,bit in pixel
582
 
583
align 4
584
l_libs_start:
585
	lib_0 l_libs lib_name_0, cur_dir_path, library_path,  system_dir_0,\
586
		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,\
588
		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,\
590
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
591
l_libs_end:
592
 
593
align 4
594
i_end:
595
	run_file_70 FileInfoBlock
6100 IgorA 596
	sc system_colors
6013 IgorA 597
align 16
598
	rb 4096
599
stacktop:
600
	cur_dir_path rb 4096
601
	library_path rb 4096
602
	file_name rb 4096
603
mem: