Subversion Repositories Kolibri OS

Rev

Rev 6189 | Rev 8174 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6189 Rev 6200
Line 1... Line 1...
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
Line 7... Line 5...
7
 
5
 
8
include '../../../../../proc32.inc'
6
include '../../../../../proc32.inc'
9
include '../../../../../macros.inc'
7
include '../../../../../macros.inc'
10
include '../../../../../KOSfuncs.inc'
-
 
11
include '../../../../../develop/libraries/box_lib/load_lib.mac'
8
include '../../../../../KOSfuncs.inc'
12
include '../../../../../dll.inc'
9
include '../../../../../load_img.inc'
13
include '../opengl_const.inc'
10
include '../opengl_const.inc'
Line 14... Line 11...
14
include '../../../../../develop/info3ds/info_fun_float.inc'
11
include '../../../../../develop/info3ds/info_fun_float.inc'
Line 15... Line -...
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 ?
12
 
26
ends
-
 
27
 
13
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
28
align 4
14
 
Line 29... Line -...
29
open_b rb 560
-
 
30
image_data_toolbar dd 0
-
 
31
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 ;удаляем временный буфер с параметрами изображения
15
align 4
Line 96... Line 16...
96
	@@:
16
image_data_toolbar dd 0
97
}
17
IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3
98
 
18
 
Line 129... Line 49...
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
Line 133... Line 53...
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 бит
Line 292... Line 212...
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]
-
 
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]
297
	fadd dword[delt_sc]
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
Line 307... Line 235...
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]
-
 
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]
312
	fsub dword[delt_sc]
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]
Line -... Line 257...
-
 
257
	ret
321
	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
Line 349... Line 286...
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
Line 353... Line 290...
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
Line 525... Line 464...
525
	dd 0,24 ;+16 color,bit in pixel
464
	dd 0,24 ;+16 color,bit in pixel
Line 526... Line 465...
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
Line 532... Line 471...
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,\
Line 541... Line 480...
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:
Line 547... Line 486...
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: