Subversion Repositories Kolibri OS

Rev

Rev 6288 | Rev 8174 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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