Subversion Repositories Kolibri OS

Rev

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

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