Subversion Repositories Kolibri OS

Rev

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

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