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 127... Line 47...
127
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
47
	mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
128
	mov eax,[eax] ;eax -> ZBuffer
48
	mov eax,[eax] ;eax -> ZBuffer
129
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
49
	mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
130
	mov dword[buf_ogl],eax
50
	mov dword[buf_ogl],eax
Line 131... Line 51...
131
 
51
 
132
	load_image_file 'font8x9.bmp', image_data_toolbar
52
	load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h
133
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
53
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер
134
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
54
	stdcall mem.Free,[image_data_toolbar] ;освобождаем память
135
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
55
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит
Line 315... Line 235...
315
 
235
 
316
align 4
236
align 4
317
but_zoom_p:
237
but_zoom_p:
318
	finit
238
	finit
319
	fld dword[scale]
239
	fld dword[scale]
-
 
240
	fadd dword[sc_delt]
-
 
241
	fcom dword[sc_max]
-
 
242
	fstsw ax
-
 
243
	sahf
-
 
244
	jbe @f
-
 
245
		ffree st0
-
 
246
		fincstp
-
 
247
		fld dword[sc_max]
320
	fadd dword[delt_sc]
248
	@@:
321
	fst dword[scale]
249
	fst dword[scale]
322
	mov word[NumberSymbolsAD],3
250
	mov word[NumberSymbolsAD],3
323
	fstp qword[Data_Double]
251
	fstp qword[Data_Double]
324
	call DoubleFloat_to_String
252
	call DoubleFloat_to_String
Line 330... Line 258...
330
 
258
 
331
align 4
259
align 4
332
but_zoom_m:
260
but_zoom_m:
333
	finit
261
	finit
334
	fld dword[scale]
262
	fld dword[scale]
-
 
263
	fsub dword[sc_delt]
-
 
264
	fcom dword[sc_min]
-
 
265
	fstsw ax
-
 
266
	sahf
-
 
267
	ja @f
-
 
268
		ffree st0
-
 
269
		fincstp
-
 
270
		fld dword[sc_min]
335
	fsub dword[delt_sc]
271
	@@:
336
	fst dword[scale]
272
	fst dword[scale]
337
	mov word[NumberSymbolsAD],3
273
	mov word[NumberSymbolsAD],3
338
	fstp qword[Data_Double]
274
	fstp qword[Data_Double]
339
	call DoubleFloat_to_String
275
	call DoubleFloat_to_String
Line 397... Line 333...
397
	stdcall [glEnable],GL_LIGHT0
333
	stdcall [glEnable],GL_LIGHT0
398
ret
334
ret
Line 399... Line 335...
399
 
335
 
Line 400... Line 336...
400
qObj dd 0
336
qObj dd 0
-
 
337
 
401
 
338
scale dd 0.4 ;начальный масштаб
-
 
339
sc_delt dd 0.05 ;изменение масштаба при нажатии
402
scale dd 0.4
340
sc_min dd 0.1 ;минимальный масштаб
403
delt_sc dd 0.05
341
sc_max dd 1.1 ;максимальный масштаб
404
angle_z dd 0.0
342
angle_z dd 0.0
Line 405... Line 343...
405
angle_y dd 0.0
343
angle_y dd 0.0
Line 574... Line 512...
574
	dd 0,24 ;+16 color,bit in pixel
512
	dd 0,24 ;+16 color,bit in pixel
Line 575... Line 513...
575
 
513
 
576
align 4
514
align 4
577
buf_1:
515
buf_1:
578
	dd 0 ;указатель на буфер изображения
516
	dd 0 ;указатель на буфер изображения
579
	dw 25,25 ;+4 left,top
517
	dd 0 ;+4 left,top
580
	dd 128,144 ;+8 w,h
518
.w: dd 0
Line 581... Line 519...
581
	dd 0,24 ;+16 color,bit in pixel
519
.h: dd 0,0,24 ;+16 color,bit in pixel
582
 
520
 
583
align 4
521
align 4
584
l_libs_start:
522
l_libs_start:
585
	lib_0 l_libs lib_name_0, cur_dir_path, library_path,  system_dir_0,\
523
	lib_0 l_libs lib_name_0, cur_dir_path, file_name,  system_dir_0,\
586
		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
587
	lib_1 l_libs lib_name_1, cur_dir_path, library_path,  system_dir_1,\
525
	lib_1 l_libs lib_name_1, cur_dir_path, file_name,  system_dir_1,\
588
		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
589
	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,\
Line 596... Line 534...
596
	sc system_colors
534
	sc system_colors
597
align 16
535
align 16
598
	rb 4096
536
	rb 4096
599
stacktop:
537
stacktop:
600
	cur_dir_path rb 4096
538
	cur_dir_path rb 4096
601
	library_path rb 4096
-
 
602
	file_name rb 4096 
539
	file_name rb 4096 
603
mem:
540
mem: