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