Subversion Repositories Kolibri OS

Rev

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

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