Subversion Repositories Kolibri OS

Rev

Rev 6189 | Rev 6288 | 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 128... Line 48...
128
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
48
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
129
	mov eax,[eax] ;eax -> ZBuffer
49
	mov eax,[eax] ;eax -> ZBuffer
130
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
50
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
131
	mov dword[buf_ogl],eax
51
	mov dword[buf_ogl],eax
Line 132... Line 52...
132
 
52
 
133
	load_image_file 'font8x9.bmp', image_data_toolbar
53
	load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h
134
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
54
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
135
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
55
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
136
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
56
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
Line 321... Line 241...
321
 
241
 
322
align 4
242
align 4
323
but_zoom_p:
243
but_zoom_p:
324
	finit
244
	finit
325
	fld dword[scale]
245
	fld dword[scale]
-
 
246
	fadd dword[sc_delt]
-
 
247
	fcom dword[sc_max]
-
 
248
	fstsw ax
-
 
249
	sahf
-
 
250
	jbe @f
-
 
251
		ffree st0
-
 
252
		fincstp
-
 
253
		fld dword[sc_max]
326
	fadd dword[delt_sc]
254
	@@:
327
	fst dword[scale]
255
	fst dword[scale]
328
	mov word[NumberSymbolsAD],3
256
	mov word[NumberSymbolsAD],3
329
	fstp qword[Data_Double]
257
	fstp qword[Data_Double]
330
	call DoubleFloat_to_String
258
	call DoubleFloat_to_String
Line 336... Line 264...
336
 
264
 
337
align 4
265
align 4
338
but_zoom_m:
266
but_zoom_m:
339
	finit
267
	finit
340
	fld dword[scale]
268
	fld dword[scale]
-
 
269
	fsub dword[sc_delt]
-
 
270
	fcom dword[sc_min]
-
 
271
	fstsw ax
-
 
272
	sahf
-
 
273
	ja @f
-
 
274
		ffree st0
-
 
275
		fincstp
-
 
276
		fld dword[sc_min]
341
	fsub dword[delt_sc]
277
	@@:
342
	fst dword[scale]
278
	fst dword[scale]
343
	mov word[NumberSymbolsAD],3
279
	mov word[NumberSymbolsAD],3
344
	fstp qword[Data_Double]
280
	fstp qword[Data_Double]
345
	call DoubleFloat_to_String
281
	call DoubleFloat_to_String
Line 393... Line 329...
393
TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.)
329
TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.)
394
texture dd 0 ;указатель на память с текстурой
330
texture dd 0 ;указатель на память с текстурой
395
text_w dd 0
331
text_w dd 0
396
text_h dd 0
332
text_h dd 0
Line 397... Line 333...
397
 
333
 
-
 
334
scale dd 0.95 ;начальный масштаб
398
scale dd 0.95
335
sc_delt dd 0.05 ;изменение масштаба при нажатии
-
 
336
sc_min dd 0.1 ;минимальный масштаб
399
delt_sc dd 0.05
337
sc_max dd 5.0 ;максимальный масштаб
400
angle_z dd 0.0
338
angle_z dd 0.0
401
angle_x dd 90.0
339
angle_x dd 90.0
402
angle_y dd 0.0
340
angle_y dd 0.0
Line 569... Line 507...
569
	dd 0,24 ;+16 color,bit in pixel
507
	dd 0,24 ;+16 color,bit in pixel
Line 570... Line 508...
570
 
508
 
571
align 4
509
align 4
572
buf_1:
510
buf_1:
573
	dd 0 ;указатель на буфер изображения
511
	dd 0 ;указатель на буфер изображения
574
	dw 25,25 ;+4 left,top
512
	dd 0 ;+4 left,top
575
	dd 128,144 ;+8 w,h
513
.w: dd 0
Line 576... Line 514...
576
	dd 0,24 ;+16 color,bit in pixel
514
.h: dd 0,0,24 ;+16 color,bit in pixel
577
 
515
 
578
align 4
516
align 4
579
l_libs_start:
517
l_libs_start:
580
	lib_0 l_libs lib_name_0, cur_dir_path, library_path,  system_dir_0,\
518
	lib_0 l_libs lib_name_0, cur_dir_path, file_name,  system_dir_0,\
581
		err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
519
		err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i
582
	lib_1 l_libs lib_name_1, cur_dir_path, library_path,  system_dir_1,\
520
	lib_1 l_libs lib_name_1, cur_dir_path, file_name,  system_dir_1,\
583
		err_msg_found_lib_1, head_f_l, import_buf2d,  err_msg_import_1,head_f_i
521
		err_msg_found_lib_1, head_f_l, import_buf2d,  err_msg_import_1,head_f_i
584
	lib_2 l_libs lib_name_2, cur_dir_path, library_path, system_dir_2,\
522
	lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\
Line 585... Line 523...
585
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
523
		err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i
586
l_libs_end:
524
l_libs_end:
Line 591... Line 529...
591
	sc system_colors
529
	sc system_colors
592
align 16
530
align 16
593
	rb 4096
531
	rb 4096
594
stacktop:
532
stacktop:
595
	cur_dir_path rb 4096
533
	cur_dir_path rb 4096
596
	library_path rb 4096
-
 
597
	file_name rb 4096 
534
	file_name rb 4096 
598
mem:
535
mem: