Subversion Repositories Kolibri OS

Rev

Rev 9568 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1706 IgorA 1
use32
8083 IgorA 2
	org 0
1706 IgorA 3
	db 'MENUET01'
8083 IgorA 4
	dd 1,start,i_end,mem,stacktop,buf_cmd_lin,sys_path
1706 IgorA 5
 
8236 IgorA 6
include '../../KOSfuncs.inc'
1706 IgorA 7
include '../../macros.inc'
8
include '../../proc32.inc'
8236 IgorA 9
include '../../load_lib.mac'
1706 IgorA 10
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
3014 dunkaist 11
include '../../dll.inc'
6169 leency 12
include '../../system/skincfg/trunk/kglobals.inc'
13
include '../../system/skincfg/trunk/unpacker.inc'
1706 IgorA 14
include 'strlen.inc'
1714 IgorA 15
include 'obj_codes.inc'
1706 IgorA 16
 
8236 IgorA 17
@use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
1706 IgorA 18
 
8083 IgorA 19
hed db 'kol_f_edit 29.09.20',0
1706 IgorA 20
 
21
sizeof.TreeList equ 20 ;need for element 'tree_list'
22
 
23
BUF_STRUCT_SIZE equ 21
24
buf2d_data equ dword[edi] ;данные буфера изображения
25
buf2d_w equ dword[edi+8] ;ширина буфера
26
buf2d_h equ dword[edi+12] ;высота буфера
27
buf2d_l equ word[edi+4] ;отступ слева
28
buf2d_t equ word[edi+6] ;отступ сверху
29
buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера
30
buf2d_color equ dword[edi+16] ;цвет фона буфера
31
buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения
32
 
1714 IgorA 33
 
1706 IgorA 34
MAX_CED_OBJECTS equ 200
35
MAX_OPT_FIELDS equ 11
1727 IgorA 36
MAX_OBJ_TYPES equ 17 ;максимальное число объектов
1714 IgorA 37
MAX_OBJ_CAPTIONS equ 1000 ;размер дополнительных подписей подписей
1706 IgorA 38
WND_CAPT_COLOR equ 0xb0d0ff
39
BUF_SIZE equ 1000
40
 
41
;modif
1720 IgorA 42
BIT_MOD_ACI equ 0 ;первоначальные настройки элементов
1717 IgorA 43
BIT_MOD_ACM equ 1 ;события от мыши
44
BIT_MOD_ACD equ 2 ;данные объектов
45
BIT_MOD_ABU equ 3 ;связывание кнопок
1904 IgorA 46
BIT_MOD_WI_CAPT equ 0 ;стиль окна подпись
47
BIT_MOD_WI_CORD_OTN_CL_OBL equ 1 ;стиль окна координаты относительно клиентской области
48
BIT_MOD_WI_REDR equ 2 ;стиль окна перерисовка окна
49
BIT_MOD_WI_GRAD equ 3 ;стиль окна градиент
1720 IgorA 50
BIT_MOD_CHE equ 0 ; ch_flag_en - выбран CheckBox
51
BIT_MOD_CHE_T equ 1 ;сверху
52
BIT_MOD_CHE_M equ 2 ;по центру
53
BIT_MOD_CHE_B equ 3 ;снизу
54
BIT_MOD_TXT_ASCII_0 equ 0 ;текст заканчив. 0
55
BIT_MOD_TXT_NO_TRAN equ 1 ;текст прозрачный
56
BIT_MOD_TXT_CHAR2 equ 2 ;текст 2-м шрифтом
1727 IgorA 57
BIT_MOD_EDIT_FOC equ 0 ;EditBox в фокусе
58
BIT_MOD_EDIT_FIO equ 1 ;
1720 IgorA 59
;CPP_MOD_RE_GR equ 1 ;градиентный прямоугольник
60
BIT_MOD_BUT_NFON equ 0 ;стиль Button не рисовать кнопку
61
BIT_MOD_BUT_NBORD equ 1 ;стиль Button не рисовать границу
62
BIT_MOD_IMPORT_FUNCT_COMMENT equ 0 ;коментировать функцию
1706 IgorA 63
 
3465 IgorA 64
macro load_image_file path,buf,size { ;макрос для загрузки изображений
65
	;path - может быть переменной или строковым параметром
66
	if path eqtype '' ;проверяем задан ли строкой параметр path
67
		jmp @f
68
			local .path_str
69
			.path_str db path ;формируем локальную переменную
70
			db 0
71
		@@:
72
		;32 - стандартный адрес по которому должен быть буфер с системным путем
5917 IgorA 73
		copy_path .path_str,[32],file_name,0
3465 IgorA 74
	else
5917 IgorA 75
		copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
3465 IgorA 76
	end if
1706 IgorA 77
 
78
	stdcall mem.Alloc, dword size ;выделяем память для изображения
79
	mov [buf],eax
80
 
81
	mov [run_file_70.Function], 0
82
	mov [run_file_70.Position], 0
83
	mov [run_file_70.Flags], 0
84
	mov [run_file_70.Count], dword size
5917 IgorA 85
	m2m [run_file_70.Buffer], eax
1706 IgorA 86
	mov byte[run_file_70+20], 0
3465 IgorA 87
	mov [run_file_70.FileName], file_name
5917 IgorA 88
	mcall 70,run_file_70 ;загружаем файл изображения
1706 IgorA 89
	cmp ebx,0xffffffff
90
	je @f
91
		;определяем вид изображения и переводим его во временный буфер image_data
8236 IgorA 92
		stdcall [img_decode], [buf],ebx,0
93
		mov [image_data],eax
1706 IgorA 94
		;преобразуем изображение к формату rgb
8236 IgorA 95
		stdcall [img_to_rgb2], [image_data],[buf]
1706 IgorA 96
		;удаляем временный буфер image_data
8236 IgorA 97
		stdcall [img_destroy], [image_data]
1706 IgorA 98
	@@:
99
}
100
 
101
struct FileInfoBlock
102
	Function dd ?
103
	Position dd ?
104
	Flags	 dd ?
105
	Count	 dd ?
106
	Buffer	 dd ?
107
	rezerv	 db ?
108
	FileName dd ?
109
ends
110
 
111
struct object
1717 IgorA 112
	id dd ? ;идентификатор объекта
113
	txt rb MAX_LEN_OBJ_TXT ;текстовые свойства
114
	lvl db 0
115
	clo db 0
116
	typid dd ? ;номер объекта определяющего тип переменной
117
	modif dd ? ;битовые свойства
1706 IgorA 118
ends
119
 
120
struct ObjOpt
1717 IgorA 121
	dd ?
1706 IgorA 122
	bl_type db ?
123
	graph db ?
124
	info rb 30
1717 IgorA 125
	caption rb MAX_OPT_CAPTION
1706 IgorA 126
	Col rw MAX_OPT_FIELDS
127
	img rw MAX_OPT_FIELDS ;индексы картинок (в файле 'icon.bmp')
1727 IgorA 128
	bit_prop dd 0 ;битовые свойства (подписи, названия)
129
	bit_val dd 0 ;битовые свойства (значения, константы)
1706 IgorA 130
ends
131
 
132
SKIN_H equ 22
133
SKIN_W1 equ 5
134
SKIN_W2 equ 7
135
SKIN_W3 equ 23
136
fn_skin_1 db 'left.bmp',0
137
fn_skin_2 db 'base.bmp',0
138
fn_skin_3 db 'oper.bmp',0
139
IMAGE_FILE_SKIN1_SIZE equ 3*(SKIN_W1+3)*SKIN_H+54
140
IMAGE_FILE_SKIN2_SIZE equ 3*(SKIN_W2+3)*SKIN_H+54
141
IMAGE_FILE_SKIN3_SIZE equ 3*(SKIN_W3+3)*SKIN_H+54
142
 
143
IMAGE_FILE_FONT1_SIZE equ 96*144*3 ;размер файла с 1-м системным шрифтом
144
 
145
fn_icon db 'icon.bmp',0
1711 IgorA 146
count_main_icons equ 35 ;число иконок в файле icon.bmp
1706 IgorA 147
bmp_icon rb 0x300*count_main_icons
148
 
149
TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;размер bmp файла с системными иконками
150
icon_tl_sys dd 0 ;указатеель на память для хранения системных иконок
151
icon_font_s1 dd 0 ;указатель на временную память для загрузки шрифта
152
 
153
fn_syntax db 'asm.syn',0 ;имя загружаемого файла синтаксиса
154
 
1717 IgorA 155
;макрос для проверки битового свойства
156
macro test_bool_prop obj_reg,n_prop
157
{
158
	bt dword[obj_reg+u_object.modif-u_object],n_prop
159
}
160
 
1706 IgorA 161
include 'ced_wnd_m.inc'
1714 IgorA 162
include 'ced_wnd_prop.inc' ;файл с функциями окна свойств объекта
1706 IgorA 163
include 'ced_constr.inc' ;файл с функциями окна конструктора
164
include 'ced_code_g.inc' ;файл с функциями генерирования кодов
165
 
166
align 4
167
start:
168
	load_libraries l_libs_start,load_lib_end
169
 
170
	;проверка на сколько удачно загузилась наша либа
171
	mov	ebp,lib0
172
	cmp	dword [ebp+ll_struc_size-4],0
173
	jz	@f
174
		mcall -1 ;exit not correct
175
	@@:
176
	mov	ebp,lib1
177
	cmp	dword [ebp+ll_struc_size-4],0
178
	jz	@f
179
		mcall -1 ;exit not correct
180
	@@:
181
	mov	ebp,lib2
182
	cmp	dword [ebp+ll_struc_size-4],0
183
	jz	@f
184
		mcall -1 ;exit not correct
185
	@@:
186
	mov	ebp,lib3
187
	cmp	dword [ebp+ll_struc_size-4],0
188
	jz	@f
189
		mcall -1 ;exit not correct
190
	@@:
191
 
1714 IgorA 192
	;задание размеров полей со свойствами
193
	mov eax,prop_edits_top
194
	mov ebx,16+6 ;ширина иконки + отступы
1706 IgorA 195
	mov edi,edit2
196
	@@:
1711 IgorA 197
		mov ed_top,eax ;отступ сверху
198
		mov ed_left,ebx ;отступ слева
1706 IgorA 199
		add edi,ed_struc_size
1714 IgorA 200
		add eax,prop_edits_height
1706 IgorA 201
		cmp edi,prop_wnd_edits_end
202
		jl @b
203
 
204
	stdcall [buf2d_create], buf_fon
205
 
206
	mcall 48,3,sc,sizeof.system_colors
207
	mcall 40,0x27
208
 
8236 IgorA 209
	stdcall [tl_data_init], tree1
210
	stdcall [tl_data_init], tree2
1706 IgorA 211
 
5917 IgorA 212
	copy_path fn_icon,sys_path,file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
1706 IgorA 213
	mov [run_file_70.Function], 0
214
	mov [run_file_70.Position], 54
215
	mov [run_file_70.Flags], 0
216
	mov [run_file_70.Count], 0x300*count_main_icons
217
	mov [run_file_70.Buffer], bmp_icon
218
	mov [run_file_70.rezerv], 0
3465 IgorA 219
	mov [run_file_70.FileName], file_name
5917 IgorA 220
	mcall 70,run_file_70
1706 IgorA 221
 
222
	cmp ebx,-1
223
	mov [err_ini0],1
224
	je @f ;if open file
225
		mov [err_ini0],0
226
		mov dword[tree1.data_img],bmp_icon
227
		mov dword[tree2.data_img],bmp_icon
228
	@@:
229
 
230
	;системные иконки 16*16 для tree_list
3465 IgorA 231
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
1706 IgorA 232
	;если изображение не открылось, то в icon_tl_sys будут
233
	;не инициализированные данные, но ошибки не будет, т. к. буфер нужного размера
1714 IgorA 234
	mov eax,dword[icon_tl_sys]
235
	mov dword[tree1.data_img_sys],eax
236
	mov dword[tree2.data_img_sys],eax
1706 IgorA 237
 
238
	;1-й файл скина
239
	load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE
240
	stdcall [buf2d_create_f_img], buf_skin1,[icon_font_s1] ;создаем буфер
241
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
242
	;2-й файл скина
243
	load_image_file fn_skin_2, icon_font_s1,IMAGE_FILE_SKIN2_SIZE
244
	stdcall [buf2d_create_f_img], buf_skin2,[icon_font_s1] ;создаем буфер
245
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
246
	;3-й файл скина
247
	load_image_file fn_skin_3, icon_font_s1,IMAGE_FILE_SKIN3_SIZE
248
	stdcall [buf2d_create_f_img], buf_skin3,[icon_font_s1] ;создаем буфер
249
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
250
 
251
	;символы 1-го системного шрифта
3465 IgorA 252
	load_image_file 'font6x9.bmp', icon_font_s1,IMAGE_FILE_FONT1_SIZE
1706 IgorA 253
	stdcall [buf2d_create_f_img], buf_font,[icon_font_s1] ;создаем буфер
254
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
255
	stdcall [buf2d_conv_24_to_8], buf_font,1 ;делаем буфер прозрачности 8 бит
256
	stdcall [buf2d_convert_text_matrix], buf_font
257
 
258
 
5917 IgorA 259
	copy_path fn_obj_opt,sys_path,fp_obj_opt,0
1706 IgorA 260
	;load options file
261
	mov [run_file_70.Position], 0
1714 IgorA 262
	mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES+MAX_OBJ_CAPTIONS
1706 IgorA 263
	mov [run_file_70.Buffer], obj_opt
264
	mov [run_file_70.FileName], fp_obj_opt
5917 IgorA 265
	mcall 70,run_file_70
1706 IgorA 266
 
267
	cmp ebx,-1
268
	mov [err_ini1],1
269
	je .open_end ;jmp if not open file
270
		mov [err_ini1],0
271
 
272
		mov eax,obj_opt ;добавляем объекты
273
		@@:
1717 IgorA 274
			mov ebx,dword[eax]
275
			cmp ebx,0
1706 IgorA 276
			je @f
277
			;xor ecx,ecx ;в ecx будет индекс иконки
1714 IgorA 278
			mov cx,word[eax+obj_opt.img-obj_opt]
1706 IgorA 279
			cmp cx,0
280
			jge .zero
281
				xor cx,cx ;что-бы не глючило с отрицательным индексом
282
			.zero:
283
			shl ecx,16
5917 IgorA 284
			stdcall dword[tl_node_add], tree1,ecx,eax ;добавляем название объекта
1706 IgorA 285
			stdcall dword[tl_cur_next], tree1 ;переносим курсор вниз, что-бы не поменялся порядок
286
			add eax,sizeof.ObjOpt ;переход на следующий объект
287
			jmp @b
288
		@@:
289
		stdcall dword[tl_cur_beg], tree1 ;переносим курсор вверх
290
 
291
	.open_end:
292
 
5917 IgorA 293
	stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога
1706 IgorA 294
	stdcall [ted_init], tedit0
5917 IgorA 295
	copy_path fn_syntax,sys_path,file_name,0
1706 IgorA 296
 
3465 IgorA 297
	; *** init syntax file ***
298
	; проверяем размер файла синтаксиса
299
	mov [run_file_70.Function], 5
300
	mov [run_file_70.Position], 0
301
	mov [run_file_70.Flags], 0
302
	mov dword[run_file_70.Count], 0
303
	mov dword[run_file_70.Buffer], open_b
304
	mov byte[run_file_70+20], 0
305
	mov dword[run_file_70.FileName], file_name
5917 IgorA 306
	mcall 70,run_file_70
3465 IgorA 307
	cmp eax,0
308
	jne @f
309
 
310
	mov edi,tedit0
311
	mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
312
	mov ted_syntax_file_size,ecx
313
 
314
	stdcall mem.Alloc,ecx ;выделяем память для файла синтаксиса
315
	mov ted_syntax_file,eax
316
 
317
	;пробуем открыть файл синтаксиса
3475 IgorA 318
	call open_unpac_synt_file
319
	jmp .end_0
3465 IgorA 320
	@@:
321
		notify_window_run txt_not_syntax_file
322
	.end_0:
323
 
1706 IgorA 324
	;get cmd line
325
	cmp [buf_cmd_lin],0
326
	je @f ;if file names exist
327
		mov esi,buf_cmd_lin
328
		call strlen ;eax=strlen
329
		mov edi,[edit1.text]
330
		mov [edit1.size],eax
331
		mov ecx,eax
332
		rep movsb
333
		call but_open_proj
334
	@@:
335
 
336
 
337
 
338
align 4
339
red_win:
340
	call draw_window
341
 
342
align 4
343
still:
344
	mcall 10
345
 
346
	cmp al,1
347
	jne @f
348
		call draw_window
349
	@@:
350
	cmp al,2
351
	jz key
352
	cmp al,3
353
	jz button
354
	cmp al,6
355
	jne @f
356
		call mouse
357
	@@:
358
 
359
	jmp still
360
 
361
align 4
362
draw_window:
363
pushad
364
	mcall 12,1
365
 
366
	xor eax,eax
367
	mov ebx,20*65536+670
368
	mov ecx,20*65536+370
369
	mov edx,[sc.work]
370
	or  edx,0x33000000
371
	mov edi,hed
372
	int 0x40
373
 
374
	mov eax,8 ;button 'Open Project'
375
	mov esi,0x80ff
376
	mov ebx,230*65536+18
377
	mov ecx,5*65536+18
378
	mov edx,5
379
	int 0x40
380
	stdcall draw_icon, 22,231,6 ;22 - open
381
 
382
	;button 'Save Project'
383
	mov ebx,250*65536+18
384
	mov ecx,5*65536+18
385
	mov edx,6
386
	int 0x40
387
	stdcall draw_icon, 17,251,6 ;17 - save
388
 
389
	;button 'Show Constructor'
390
	mov ebx,310*65536+18
391
	mov ecx,5*65536+18
392
	mov edx,11
393
	int 0x40
394
	stdcall draw_icon, 12,311,6 ;12 - window
395
 
396
	;button 'Show Code'
397
	mov ebx,330*65536+18
398
	mov edx,12
399
	int 0x40
400
	stdcall draw_icon, 11,331,6 ;11 - text
401
 
1711 IgorA 402
	;button 'Update: Code, Constructor'
1706 IgorA 403
	mov ebx,350*65536+18
404
	mov edx,13
405
	int 0x40
406
	stdcall draw_icon, 32,351,6 ;32 - update
407
 
408
	;button 'Save Code'
409
	mov ebx,370*65536+18
410
	mov edx,14
411
	int 0x40
412
	stdcall draw_icon, 17,371,6 ;17 - save
413
 
414
	;button ']P'
415
	mov ebx,390*65536+18
416
	mov edx,15
417
	int 0x40
418
	stdcall draw_icon, 18,391,6 ;18 - знак конца абзаца
419
 
420
	;button 'Show color text'
421
	mov ebx,410*65536+18
422
	mov edx,16
423
	int 0x40
424
	stdcall draw_icon, 19,411,6
425
 
1711 IgorA 426
	;button 'Add Object'
427
	mov ebx,125*65536+18
428
	mov ecx,30*65536+18
429
	mov edx,31
430
	int 0x40
431
	stdcall draw_icon, 14,126,31 ;14 - add object
432
 
1706 IgorA 433
	;button 'Move Up'
1711 IgorA 434
	mov ebx,155*65536+18
1706 IgorA 435
	mov edx,21
436
	int 0x40
1711 IgorA 437
	stdcall draw_icon, 23,156,31 ;23 - move up
1706 IgorA 438
 
439
	;button 'Move Down'
1711 IgorA 440
	mov ebx,175*65536+18
1706 IgorA 441
	mov edx,22
442
	int 0x40
1711 IgorA 443
	stdcall draw_icon, 24,176,31 ;24 - move down
1706 IgorA 444
 
445
	;button 'Copy'
1711 IgorA 446
	mov ebx,195*65536+18
1706 IgorA 447
	mov edx,23
448
	int 0x40
1711 IgorA 449
	stdcall draw_icon, 30,196,31 ;30 - copy
1706 IgorA 450
 
451
	;button 'Paste'
1711 IgorA 452
	mov ebx,215*65536+18
1706 IgorA 453
	mov edx,24
454
	int 0x40
1711 IgorA 455
	stdcall draw_icon, 31,216,31 ;31 - paste
1706 IgorA 456
 
457
	;button 'Property'
1711 IgorA 458
	mov ebx,235*65536+18
1706 IgorA 459
	mov edx,25
460
	int 0x40
1711 IgorA 461
	stdcall draw_icon, 7,236,31 ;7 - property
1706 IgorA 462
 
1711 IgorA 463
	;button 'Undo'
464
	mov ebx,255*65536+18
465
	mov edx,26
466
	int 0x40
467
	stdcall draw_icon, 33,256,31 ;33 - undo
468
 
469
	;button 'Redo'
470
	mov ebx,275*65536+18
471
	mov edx,27
472
	int 0x40
473
	stdcall draw_icon, 34,276,31 ;34 - redo
474
 
1706 IgorA 475
; 10 30 50 70 90
476
 
477
	cmp [err_opn],1
478
	jne @f
5917 IgorA 479
		mcall 4,10*65536+35,0x80ff0000,txtErrOpen
1706 IgorA 480
	@@:
481
 
8236 IgorA 482
	stdcall [edit_box_draw], edit1
483
	stdcall [edit_box_draw], edit_sav
1714 IgorA 484
 
485
	mov dword[w_scr_t1.all_redraw],1
8236 IgorA 486
	;stdcall [scrollbar_ver_draw], w_scr_t1
487
	stdcall [tl_draw], tree1
1714 IgorA 488
	mov dword[w_scr_t2.all_redraw],1
8236 IgorA 489
	;stdcall [scrollbar_ver_draw], w_scr_t2
490
	stdcall [tl_draw], tree2
1706 IgorA 491
 
492
	cmp byte[show_mode],0 ;условие видимости окна конструктора
493
	jne @f
494
		stdcall [buf2d_draw], buf_fon
495
	@@:
496
	cmp byte[show_mode],1 ;условие видимости текстового окна
497
	jne @f
498
		stdcall [ted_draw], tedit0
499
	@@:
500
	mcall 12,2
501
popad
502
	ret
503
 
504
align 4
505
mouse:
8236 IgorA 506
	stdcall [edit_box_mouse], edit1
507
	stdcall [edit_box_mouse], edit_sav
508
	stdcall [tl_mouse], tree1
509
	stdcall [tl_mouse], tree2
1706 IgorA 510
	cmp byte[show_mode],1 ;условие видимости текстового окна
511
	jne @f
512
		stdcall [ted_mouse], tedit0
513
	@@:
514
	ret
515
 
516
 
517
align 4
518
key:
519
	mcall 2
8236 IgorA 520
	stdcall [edit_box_key], edit1
521
	stdcall [edit_box_key], edit_sav
522
	stdcall [tl_key], tree1
523
	stdcall [tl_key], tree2
1706 IgorA 524
 
525
	jmp still
526
 
527
align 4
528
button:
529
	mcall 17
530
	cmp ah,5
531
	jne @f
532
		call but_open_proj
5917 IgorA 533
		jmp still
1706 IgorA 534
	@@:
535
	cmp ah,6
536
	jne @f
537
		call but_save_proj
5917 IgorA 538
		jmp still
1706 IgorA 539
	@@:
1714 IgorA 540
	;cmp ah,10
541
	;jne @f
542
		;call but_element_change
543
	;@@:
1706 IgorA 544
	cmp ah,11
545
	jne @f
546
		call but_show_constructor
5917 IgorA 547
		jmp still
1706 IgorA 548
	@@:
549
	cmp ah,12
550
	jne @f
551
		call but_show_code
5917 IgorA 552
		jmp still
1706 IgorA 553
	@@:
554
	cmp ah,13
555
	jne @f
1711 IgorA 556
		call but_update
5917 IgorA 557
		jmp still
1706 IgorA 558
	@@:
559
	cmp ah,14
560
	jne @f
561
		call but_save_asm
5917 IgorA 562
		jmp still
1706 IgorA 563
	@@:
564
	cmp ah,15
565
	jne @f
566
		call but_show_invis
5917 IgorA 567
		jmp still
1706 IgorA 568
	@@:
569
	cmp ah,16
570
	jne @f
571
		call but_show_syntax
5917 IgorA 572
		jmp still
1706 IgorA 573
	@@:
574
	cmp ah,21
575
	jne @f
576
		call but_obj_move_up
5917 IgorA 577
		jmp still
1706 IgorA 578
	@@:
579
	cmp ah,22
580
	jne @f
581
		call but_obj_move_down
5917 IgorA 582
		jmp still
1706 IgorA 583
	@@:
584
	cmp ah,23
585
	jne @f
586
		call but_obj_copy
5917 IgorA 587
		jmp still
1706 IgorA 588
	@@:
589
	cmp ah,24
590
	jne @f
591
		call but_obj_paste
5917 IgorA 592
		jmp still
1706 IgorA 593
	@@:
594
	cmp ah,25
595
	jne @f
596
		call on_file_object_select
5917 IgorA 597
		jmp still
1706 IgorA 598
	@@:
1711 IgorA 599
	cmp ah,26
600
	jne @f
601
		stdcall [tl_info_undo], tree2
602
		stdcall [tl_draw], tree2
5917 IgorA 603
		jmp still
1711 IgorA 604
	@@:
605
	cmp ah,27
606
	jne @f
607
		stdcall [tl_info_redo], tree2
608
		stdcall [tl_draw], tree2
5917 IgorA 609
		jmp still
1711 IgorA 610
	@@:
611
	cmp ah,31
612
	jne @f
613
		call on_add_object
5917 IgorA 614
		jmp still
1711 IgorA 615
	@@:
1706 IgorA 616
	cmp ah,1
617
	jne still
618
.exit:
619
	stdcall mem.Free,[icon_tl_sys]
620
	mov dword[tree1.data_img],0
621
	mov dword[tree2.data_img],0
622
	mov dword[tree1.data_img_sys],0
623
	mov dword[tree2.data_img_sys],0
624
	stdcall dword[tl_data_clear], tree1
625
	stdcall dword[tl_data_clear], tree2
626
	stdcall [buf2d_delete],buf_fon ;удаляем буфер
627
	stdcall [buf2d_delete],buf_font ;удаляем буфер
628
	stdcall [buf2d_delete],buf_skin1
629
	stdcall [buf2d_delete],buf_skin2
630
	stdcall [buf2d_delete],buf_skin3
631
	stdcall [ted_delete], tedit0
3475 IgorA 632
	cmp dword[unpac_mem],0
633
	je @f
634
		stdcall mem.Free,[unpac_mem]
635
	@@:
1706 IgorA 636
	mcall -1
637
 
638
align 4
5917 IgorA 639
open_file_data dd 0 ;указатель на память для открытия файлов
640
open_file_size dd 0 ;размер открытого файла
641
 
642
align 4
1706 IgorA 643
but_open_proj:
5917 IgorA 644
	copy_path open_dialog_name,communication_area_default_path,file_name,0
1706 IgorA 645
	pushad
5917 IgorA 646
	mov [OpenDialog_data.type],0
647
	stdcall [OpenDialog_Start],OpenDialog_data
648
	cmp [OpenDialog_data.status],2
649
	je .open_end
650
	;код при удачном открытии диалога
651
 
652
	mov [run_file_70.Function], 5
653
	mov [run_file_70.Position], 0
654
	mov [run_file_70.Flags], 0
655
	mov dword[run_file_70.Count], 0
656
	mov dword[run_file_70.Buffer], open_b
657
	mov byte[run_file_70+20], 0
658
	mov dword[run_file_70.FileName], openfile_path
659
	mcall 70,run_file_70
660
 
661
	mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
662
	mov [open_file_size],ecx
663
	stdcall mem.ReAlloc,[open_file_data],ecx
664
	mov [open_file_data],eax
665
 
1706 IgorA 666
	mov [run_file_70.Function], 0
667
	mov [run_file_70.Position], 0
668
	mov [run_file_70.Flags], 0
5917 IgorA 669
	mov dword[run_file_70.Count], ecx
670
	m2m dword[run_file_70.Buffer], eax
671
	mov byte[run_file_70+20], 0
672
	mov dword[run_file_70.FileName], openfile_path
673
	mcall 70,run_file_70 ;загружаем файл
674
	cmp ebx,0xffffffff
1706 IgorA 675
	mov [err_opn],1
676
	je .open_end ;if open file
677
		mov [err_opn],0
5917 IgorA 678
		stdcall [edit_box_set_text], edit1,openfile_path
1706 IgorA 679
 
680
		stdcall dword[tl_info_clear], tree2
5917 IgorA 681
		mov eax,[open_file_data] ;добавляем объекты
1706 IgorA 682
		@@:
1717 IgorA 683
			mov ebx,dword[eax]
684
			cmp ebx,0
1706 IgorA 685
			je @f
686
 
687
			call find_obj_in_opt ;edi = pointer to ObjOpt struct
688
 
1714 IgorA 689
			mov cx,word[edi+obj_opt.img-obj_opt]
1706 IgorA 690
			cmp cx,0
691
			jge .zero
692
				xor cx,cx ;что-бы не глючило с отрицательным индексом
693
			.zero:
694
			shl ecx,16 ;в ecx индекс иконки
5917 IgorA 695
			mov cl,byte[eax+u_object.lvl-u_object] ;уровень объекта
1711 IgorA 696
 
697
			;tl_node_close_open - не подходит, т.к. действует на узлы имеющие дочерние
5917 IgorA 698
			mov ch,byte[eax+u_object.clo-u_object] ;закрытый/открытый
1711 IgorA 699
 
5917 IgorA 700
			stdcall dword[tl_node_add], tree2,ecx,eax ;добавляем объект
1711 IgorA 701
 
1706 IgorA 702
			stdcall dword[tl_cur_next], tree2 ;переносим курсор вниз, что-бы не поменялся порядок
703
			add eax,sizeof.object ;переход на следующий объект
704
			jmp @b
705
		@@:
706
		stdcall dword[tl_cur_beg], tree2 ;переносим курсор вверх
707
 
708
		mov [foc_obj],0
709
		call draw_constructor
710
		call code_gen
711
	.open_end:
712
	call draw_window ;перерисовка окна идет в любом случае, даже если файл не открылся
713
	popad
714
	ret
715
 
716
;сохранение файла проэкта на диск
717
align 4
718
but_save_proj:
5917 IgorA 719
	copy_path open_dialog_name,communication_area_default_path,file_name,0
1706 IgorA 720
	pushad
5917 IgorA 721
	mov [OpenDialog_data.type],1
722
	stdcall [OpenDialog_Start],OpenDialog_data
723
	cmp [OpenDialog_data.status],2
724
	je .end_save_file
725
	;код при удачном открытии диалога
1706 IgorA 726
 
5917 IgorA 727
	;берем размер памяти, необходимой для сохранения файла
728
	xor ecx,ecx
729
	stdcall [tl_node_poi_get_info], tree2,0
730
	@@:
731
		cmp eax,0
732
		je @f
733
		inc ecx
734
		stdcall [tl_node_poi_get_next_info], tree2,eax ;переходим к следущему узлу
735
		jmp @b
736
	@@:
737
	;movzx eax,word[tree2.info_size]
738
	imul ecx,sizeof.object ;eax
739
	add ecx,4 ;метка конца файла
740
	mov [open_file_size],ecx
741
	stdcall mem.ReAlloc,[open_file_data],ecx
742
	mov [open_file_data],eax
1706 IgorA 743
 
5917 IgorA 744
	mov edi,[open_file_data]
745
	stdcall [tl_node_poi_get_info], tree2,0
746
	mov edx,eax
1706 IgorA 747
	@@:
748
		cmp edx,0
749
		je @f
5917 IgorA 750
		stdcall [tl_node_poi_get_data], tree2,edx
751
		mov esi,eax ;получаем данные узла
1706 IgorA 752
 
753
		mov bl,byte[edx+2] ;bl - уровень объекта
1717 IgorA 754
		mov byte[esi+u_object.lvl-u_object],bl
1711 IgorA 755
		mov bl,byte[edx+3] ;bl - открытие/закрытие объекта
1717 IgorA 756
		mov byte[esi+u_object.clo-u_object],bl
1706 IgorA 757
 
758
		;вычисляем новый индекс для типа объекта
1717 IgorA 759
		mov ebx,[esi+u_object.typid-u_object] ;ebx - тип объекта
1706 IgorA 760
		;сохраняем тип объекта
761
		push ebx
762
			imul ebx,sizeof.TreeList
763
			add ebx,[tree2.data_nodes] ;ebx - указатель объект указывающий тип
764
			stdcall get_obj_npp,ebx
1717 IgorA 765
			mov [esi+u_object.typid-u_object],eax
1706 IgorA 766
			mov eax,esi
767
			;копируем объект в память для сохранения
5917 IgorA 768
			movzx ecx,word[tree2.info_size]
1706 IgorA 769
			cld
770
			rep movsb
771
		;восстанавливаем тип объекта
1717 IgorA 772
		pop dword[eax+u_object.typid-u_object]
1706 IgorA 773
 
5917 IgorA 774
		stdcall [tl_node_poi_get_next_info], tree2,edx
775
		mov edx,eax ;переходим к следущему узлу
1706 IgorA 776
		jmp @b
777
	@@:
1717 IgorA 778
	mov dword[edi],0 ;метка конца файла
779
	add edi,4
1706 IgorA 780
 
5917 IgorA 781
	stdcall [edit_box_set_text], edit1,openfile_path
782
	mov ecx,[open_file_size] ;ecx - размер сохраняемого файла
1706 IgorA 783
	mov [run_file_70.Function], 2
784
	mov [run_file_70.Position], 0
785
	mov [run_file_70.Flags], 0
786
	mov [run_file_70.Count], ecx
5917 IgorA 787
	m2m [run_file_70.Buffer], [open_file_data]
1706 IgorA 788
	mov [run_file_70.rezerv], 0
5917 IgorA 789
	mov dword[run_file_70.FileName], openfile_path
790
	mcall 70,run_file_70
1706 IgorA 791
 
5917 IgorA 792
	.end_save_file:
1706 IgorA 793
	popad
794
	ret
795
 
796
;берет номер по порядку по указателю на структуру объекта
1714 IgorA 797
;output:
798
; eax - номер объекта
1706 IgorA 799
align 4
5917 IgorA 800
proc get_obj_npp uses ebx ecx, p_obj_str:dword
801
	mov ecx,2
1706 IgorA 802
	mov ebx,[p_obj_str]
803
 
5917 IgorA 804
	stdcall [tl_node_poi_get_info], tree2,0
1706 IgorA 805
	@@:
5917 IgorA 806
		cmp eax,0
1727 IgorA 807
		je .no_exist
5917 IgorA 808
		cmp eax,ebx
1706 IgorA 809
		je @f
810
 
5917 IgorA 811
		inc ecx
812
		stdcall [tl_node_poi_get_next_info], tree2,eax ;переходим к следущему узлу
1706 IgorA 813
		jmp @b
1727 IgorA 814
	.no_exist: ;когда идет ссылка на не существующий объект
5917 IgorA 815
		xor ecx,ecx ;обнуляем указатель, что-бы не сохранять в файл мусор
1706 IgorA 816
	@@:
5917 IgorA 817
	mov eax,ecx
1706 IgorA 818
	ret
819
endp
820
 
821
;функция для сохранения созданного asm файла
822
align 4
823
but_save_asm:
824
	push edi
825
	mov edi, tedit0
826
 
5917 IgorA 827
	stdcall [ted_save_file],edi,run_file_70,[edit_sav.text]
1706 IgorA 828
	cmp ted_err_save,0
829
	jne @f
830
		stdcall [mb_create],msgbox_1,thread ;message: Файл был сохранен
831
	@@:
832
	pop edi
833
	ret
834
 
835
;функция для показа/скрытия невидимых символов
836
align 4
837
but_show_invis:
838
	push edi
839
	mov edi,tedit0
840
 
841
	xor ted_mode_invis,1
842
	cmp byte[show_mode],1 ;условие видимости текстового окна
843
	jne @f
844
		stdcall [ted_draw],edi
845
	@@:
846
	pop edi
847
	ret
848
 
849
;
850
align 4
851
but_show_syntax:
852
	push edi
853
	mov edi,tedit0
854
 
855
	xor ted_mode_color,1
856
	cmp byte[show_mode],1 ;условие видимости текстового окна
857
	jne @f
858
		stdcall [ted_draw],edi
859
	@@:
860
	pop edi
861
	ret
862
 
863
align 4
864
ted_save_err_msg:
865
	mov byte[msgbox_0.err],al
866
	stdcall [mb_create],msgbox_0,thread ;message: Can-t save text file!
867
	ret
868
 
869
;функция вызываемая при нажатии Enter в окне tree2
870
;обновляет текстовые поля значениями параметров взятых из объектов
871
;функция обратная к данной but_element_change
872
align 4
873
on_file_object_select:
1714 IgorA 874
	cmp byte[prop_wnd_run],0
875
	jne @f
876
		mov byte[prop_wnd_run],1
877
		stdcall [tl_node_get_data], tree2
5917 IgorA 878
		mov dword[foc_obj],eax
879
		cmp eax,0
1714 IgorA 880
		je @f
881
			pushad
882
			;все действия по настройке элементов управления выполняются в окне со свойствами
883
			mcall 51,1,prop_start,prop_thread
884
			popad
1706 IgorA 885
	@@:
1714 IgorA 886
	;call draw_window
1706 IgorA 887
	ret
888
 
1711 IgorA 889
;функция вызываемая при нажатии Enter в окне tree1
890
;добавляет новый объект в окно tree2
1706 IgorA 891
align 4
1711 IgorA 892
on_add_object:
893
push eax ebx ecx
894
	stdcall [tl_node_get_data], tree1
895
	cmp eax,0
896
	je @f
897
		xor ecx,ecx
898
		mov cx,word[eax+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта
3475 IgorA 899
 
900
		cmp ecx,count_main_icons ;в старших битах ecx будут 0, потому отрицательные числа тоже проверяются
901
		jl .end_0
902
			;если иконки нет, по умолчанию берем 0-ю
903
			xor cx,cx
904
		.end_0:
905
 
1711 IgorA 906
		shl ecx,16
907
		stdcall mem_clear, u_object,sizeof.object
1717 IgorA 908
		mov ebx,dword[eax]
909
		mov dword[u_object.id],ebx
5917 IgorA 910
		stdcall dword[tl_node_add], tree2,ecx,u_object ;добавляем объект
1711 IgorA 911
	@@:
912
pop ecx ebx eax
913
	call draw_window
914
	ret
915
 
916
align 4
1706 IgorA 917
but_ctrl_o:
918
	ret
919
align 4
920
but_ctrl_n:
921
	ret
922
align 4
923
but_ctrl_s:
924
	ret
925
 
3475 IgorA 926
;открытие и распаковка файла подсветки синтаксиса
927
;input:
928
; ted_syntax_file - буфер для открываемого файла синтаксиса
929
; ted_syntax_file_size - размер открываемого файла синтаксиса
930
;output:
931
; ebx - число прочитанных байт из файла
1706 IgorA 932
align 4
3475 IgorA 933
open_unpac_synt_file:
934
push eax edi esi
935
	mov edi, tedit0
936
	mov [run_file_70.Function], 0
937
	mov [run_file_70.Position], 0
938
	mov [run_file_70.Flags], 0
939
	mov ecx, ted_syntax_file_size
940
	mov dword[run_file_70.Count], ecx
941
	m2m dword[run_file_70.Buffer], ted_syntax_file
942
	mov byte[run_file_70+20], 0
943
	mov [run_file_70.FileName], file_name
944
	mcall 70, run_file_70
945
	cmp ebx,-1
946
	jne .end_0
947
		;если возникли ошибки при открытии файла синтаксиса
948
		mov byte[txt_not_syntax_file.err],'0'
949
		add byte[txt_not_syntax_file.err],al
950
		notify_window_run txt_not_syntax_file ;Can-t open color options file!
951
		jmp @f
952
	.end_0:
953
 
954
		mov eax,ted_syntax_file
955
		cmp dword[eax],'KPCK'
956
		jne .end_unpack
957
 
958
		mov ecx,dword[eax+4] ;ecx - размер файла синтаксиса после распаковки
959
		cmp dword[unpac_mem],0
960
		jne .end_1
961
			;первоначальное выделение временной памяти для распаковки файла
962
			stdcall mem.Alloc,ecx
963
			mov [unpac_mem],eax
964
			mov [unpac_mem_size],ecx
965
		.end_1:
966
		cmp dword[unpac_mem_size],ecx
967
		jge .end_2
968
			;если для распакованого файла не хватает временной памяти
969
			stdcall mem.ReAlloc,[unpac_mem],ecx ;заново выделяем временную память
970
			mov [unpac_mem],eax
971
			mov [unpac_mem_size],ecx
972
		.end_2:
973
 
974
		;распаковка файла во временную память
975
		stdcall unpack,ted_syntax_file,[unpac_mem]
976
 
977
		cmp ted_syntax_file_size,ecx
978
		jge .end_3
979
			;если для распакованого файла не хватает памяти
980
			stdcall mem.ReAlloc,ted_syntax_file,ecx ;заново выделяем память
981
			mov ted_syntax_file,eax
982
			mov ted_syntax_file_size,ecx
983
		.end_3:
984
 
985
		;копирование распакованного файла из временной памяти в память элемента
986
		mov edi,ted_syntax_file
987
		mov esi,[unpac_mem]
988
		cld
989
		rep movsb
990
 
991
		.end_unpack:
992
		;применение файла подсветки
993
		stdcall [ted_init_syntax_file], tedit0
994
	@@:
995
pop esi edi eax
996
	ret
997
 
998
align 4
999
txt_not_syntax_file:
1000
	db 'Ошибка при открытии файла с цветовыми настройками! (Код ошибки ='
1001
	.err: db '?'
1002
	db ')',0
1003
 
1004
align 4
1706 IgorA 1005
buf_fon: ;фоновый буфер
1006
	dd 0 ;указатель на буфер изображения
1007
	dw 310 ;+4 left
1008
	dw 50 ;+6 top
1009
	dd 340 ;+8 w
1010
	dd 280 ;+12 h
1011
	dd 0xffffff ;+16 color
1012
	db 24 ;+20 bit in pixel
1013
 
1014
align 4
1015
buf_font: ;буфер матрицы со шрифтом
1016
	dd 0 ;указатель на буфер изображения
1017
	dw 25 ;+4 left
1018
	dw 25 ;+6 top
1019
	dd 96 ;+8 w
1020
	dd 144 ;+12 h
1021
	dd 0 ;+16 color
1022
	db 24 ;+20 bit in pixel
1023
 
1024
align 4
1025
buf_skin1:
1026
	dd 0 ;указатель на буфер изображения
1027
	dw 0 ;+4 left
1028
	dw 0 ;+6 top
1029
	dd SKIN_W1 ;+8 w
1030
	dd SKIN_H ;+12 h
1031
	dd 0 ;+16 color
1032
	db 24 ;+20 bit in pixel
1033
align 4
1034
buf_skin2:
1035
	dd 0 ;указатель на буфер изображения
1036
	dw 0 ;+4 left
1037
	dw 0 ;+6 top
1038
	dd SKIN_W2 ;+8 w
1039
	dd SKIN_H ;+12 h
1040
	dd 0 ;+16 color
1041
	db 24 ;+20 bit in pixel
1042
align 4
1043
buf_skin3:
1044
	dd 0 ;указатель на буфер изображения
1045
	dw 0 ;+4 left
1046
	dw 0 ;+6 top
1047
	dd SKIN_W3 ;+8 w
1048
	dd SKIN_H ;+12 h
1049
	dd 0 ;+16 color
1050
	db 24 ;+20 bit in pixel
1051
 
1052
show_mode db 0 ;режим для показа определенного окна
1053
txtErrOpen db 'Не найден файл, проверьте правильность имени',0
1054
txtErrIni1 db 'Не открылся файл с опциями',0
1714 IgorA 1055
err_opn db 0 ;рез. открытия файла проэкта
1056
err_ini0 db 0 ;рез. открытия файла с иконками
1057
err_ini1 db 0 ;рез. открытия файла с опциями
3475 IgorA 1058
unpac_mem dd 0
1059
unpac_mem_size dd 0
1706 IgorA 1060
 
1061
edit1 edit_box 210, 10, 5, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7
1062
 
1063
edit2 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text2, mouse_dd, 0
1064
edit3 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text3, mouse_dd, 0
1065
edit4 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text4, mouse_dd, 0
1066
edit5 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text5, mouse_dd, 0
1067
edit6 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text6, mouse_dd, 0
1068
edit7 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text7, mouse_dd, 0
1069
edit8 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text8, mouse_dd, 0
1070
edit9 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text9, mouse_dd, 0
1711 IgorA 1071
edit10 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text10, mouse_dd, 0
1072
edit11 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text11, mouse_dd, 0
1073
edit12 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text12, mouse_dd, 0
1706 IgorA 1074
prop_wnd_edits_end: ;конец текстовых полей, отвечающих за свойства
1075
 
1076
edit_sav edit_box 210, 310, 30, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text_sav, mouse_dd, 0
1077
 
1078
 
1079
ed_text1 db '/hd0/1/',0
1080
	rb 295
1081
ed_text2 rb MAX_LEN_OBJ_TXT+2
1082
ed_text3 rb MAX_LEN_OBJ_TXT+2
1083
ed_text4 rb MAX_LEN_OBJ_TXT+2
1084
ed_text5 rb MAX_LEN_OBJ_TXT+2
1085
ed_text6 rb MAX_LEN_OBJ_TXT+2
1086
ed_text7 rb MAX_LEN_OBJ_TXT+2
1087
ed_text8 rb MAX_LEN_OBJ_TXT+2
1088
ed_text9 rb MAX_LEN_OBJ_TXT+2
1711 IgorA 1089
ed_text10 rb MAX_LEN_OBJ_TXT+2
1090
ed_text11 rb MAX_LEN_OBJ_TXT+2
1091
ed_text12 rb MAX_LEN_OBJ_TXT+2
1706 IgorA 1092
ed_text_sav rb 302
1093
 
1094
txt_null db 'null',0
1095
mouse_dd dd ?
1096
 
1097
el_focus dd tree1
1098
;дерево со списком возможных типов объектов
1099
tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
1717 IgorA 1100
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,obj_opt.info-obj_opt,0, el_focus,\
1706 IgorA 1101
	w_scr_t1,on_add_object
1102
;дерево с объектами в пользовательском файле
1103
tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\
1717 IgorA 1104
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 155,50,130,280, 13,u_object.txt-u_object,MAX_LEN_OBJ_TXT, el_focus,\
1706 IgorA 1105
	w_scr_t2,on_file_object_select
1106
 
1107
msgbox_0:
1108
  db 1,0
1109
  db 'Warning',0
1110
  db 'Error saving file!',13,\
1111
     'Maybe the file name is not entered correctly.',13,\
1112
     '  (error code ='
1113
  .err: db '?'
1114
  db ')',0
1115
  db 'Close',0
1116
  db 0
1117
 
1118
msgbox_1:
1119
	db 1,0
1120
	db ':)',0
1121
	db 'File was saved',0
1122
	db 'Ok',0
1123
	db 0
1124
 
1125
struct TexSelect
1126
	x0 dd ?
1127
	y0 dd ?
1128
	x1 dd ?
1129
	y1 dd ?
1130
ends
1131
;------------------------------------------------------------------------------
1132
align 4
1133
tedit0: ;структура текстового редактора
1134
	.wnd BOX 310,50,325,260 ;+ 0
1135
	.rec BOX 30,13,7,10   ;+16
1136
	.drag_m db 0 ;+32 выделение от мыши
1137
	.drag_k db 0 ;+33 выделение от клавиатуры
1138
	.sel  TexSelect 0,0,0,0 ;+34 структура выделения
1139
	.seln TexSelect ;+50 дополнительная структура выделения
1140
	.tex	  dd 0 ;+66 text memory pointer
1141
	.tex_1	  dd 0 ;+70 text first symbol pointer
1142
	.tex_end  dd 0 ;+74 text end memory pointer
1143
	.cur_x	  dd 0 ;+78 координата x курсора
1144
	.cur_y	  dd 0 ;+82 координата y курсора
1145
	.max_chars dd 25002 ;+86 максимальное число символов в одном документе
1146
	.count_colors_text dd 1 ;+90 колличество цветов текста
1147
	.count_key_words   dd 0 ;+94 колличество ключевых слов
1148
	.color_cursor	   dd 0xff0000 ;+98 цвет курсора
1149
	.color_wnd_capt    dd 0x0080c0 ;+102 цвет полей вокруг окна
1150
	.color_wnd_work    dd	   0x0 ;+106 цвет фона окна
1151
	.color_wnd_bord    dd 0xffffff ;+110 цвет текста на полях
1152
	.color_select	   dd 0x0000ff ;+114 цвет выделения
1153
	.color_cur_text    dd 0xffff00 ;+118 цвет символа под курсором
1154
	.color_wnd_text    dd 0x80ffff ;+122 цвет текста в окне
1155
	.syntax_file	   dd 0 ;+126 указатель на начало файла синтаксиса
1156
	.syntax_file_size  dd 55*1024 ;+130 максимальный размер файла синтаксиса
1157
	.text_colors	   dd 0 ;+134 указатель на массив цветов текста
1158
	.help_text_f1	   dd 0 ;+138 указатель на текст справки (по нажатии F1)
1159
	.help_id	   dd -1 ;+142 идентификатор для справки
1160
	.key_words_data    dd 0 ;+146 указатель на структуры ключевых слов TexColViv
1161
	.tim_ch      dd ? ;+150 количество изменений в файле
1162
	.tim_undo    dd ? ;+154 количество отмененных действий
1163
	.tim_ls      dd ? ;+158 время последнего сохранения
1164
	.tim_co      dd ? ;+162 время последней цветовой разметки
1165
	.el_focus    dd el_focus ;+166 указатель на переменную элемента в фокусе
1166
	.err_save    db 0 ;+170 ошибка сохранения файла
1167
	.panel_id    db 0 ;+171 номер открытой панели
1168
	.key_new     db 0 ;+172 символ, который будет добавлятся с клавиатуры
1169
	.symbol_new_line db 20 ;+173 символ завершения строки
1170
	.scr_w	     dd scrol_w1 ;+174 вертикальный скроллинг
1171
	.scr_h	     dd scrol_h1 ;+178 горизонтальный скроллинг
1172
	.arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов
1173
	.buffer      dd text_buffer ;+186 указатель на буфер копирования/вставки
1174
	.buffer_find dd 0 ;+190 указатель на буфер для поиска
1175
	.cur_ins     db 1 ;+194 режим работы курсора (обычный или замена)
1176
	.mode_color  db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.)
1177
	.mode_invis  db 0 ;+196 режим показа непечатаемых символов
1178
	.gp_opt      db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor
1179
	.fun_on_key_ctrl_o dd but_ctrl_o ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
1180
	.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (вызова/скрытия панели поиска)
1181
	.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (создание нового документа)
1182
	.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
1183
	.buffer_size	   dd BUF_SIZE ;+214 размер буфера копирования/вставки
1184
	.fun_find_err	   dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно
1185
	.fun_init_synt_err dd 0 ;+222 указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
1186
	.fun_draw_panel_buttons dd 0 ;+226 указатель на функцию рисования панели с кнопками
1187
	.fun_draw_panel_find	dd 0 ;+230 указатель на функцию рисования панели поиска
1188
	.fun_draw_panel_syntax	dd 0 ;+234 указатель на функцию рисования панели синтаксиса
1189
	.fun_save_err		dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
1190
	.increase_size dd 1000 ;+242 число символов на которые будет увечиваться память при нехватке
1191
	.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
1192
;------------------------------------------------------------------------------
1193
align 4
1194
scrol_w1:
1195
.x:
1196
.size_x   dw 16 ;+0
1197
.start_x  dw 85 ;+2
1198
.y:
1199
.size_y   dw 100 ; +4
1200
.start_y  dw  15 ; +6
1201
.btn_high dd  15 ; +8
1202
.type	  dd   1 ;+12
1203
.max_area dd 100 ;+16
1204
rb 4+4
1205
.bckg_col dd 0xeeeeee ;+28
1206
.frnt_col dd 0xbbddff ;+32
1207
.line_col dd 0x808080 ;+36
1208
.redraw   dd   0 ;+40
1209
.delta	  dw   0 ;+44
1210
.delta2   dw   0 ;+46
1211
.run_x:
3475 IgorA 1212
rb 32
1706 IgorA 1213
.all_redraw dd 0 ;+80
1214
.ar_offset  dd 1 ;+84
1215
;---------------------------------------------------------------------
1216
align 4
1217
scrol_h1:
1218
.x:
1219
.size_x     dw 85 ;+0
1220
.start_x    dw 30 ;+2
1221
.y:
1222
.size_y     dw 16 ;+4
1223
.start_y    dw 100 ;+6
1224
.btn_high   dd 15 ;+8
1225
.type	    dd 1  ;+12
1226
.max_area   dd 100 ;+16
1227
rb 4+4
1228
.bckg_col   dd 0xeeeeee ;+28
1229
.frnt_col   dd 0xbbddff ;+32
1230
.line_col   dd 0x808080 ;+36
1231
.redraw     dd 0  ;+40
1232
.delta	    dw 0  ;+44
1233
.delta2     dw 0  ;+46
1234
.run_x:
3475 IgorA 1235
rb 32
1706 IgorA 1236
.all_redraw dd 0 ;+80
1237
.ar_offset  dd 1 ;+84
1238
 
1239
 
1240
 
1241
align 4
1242
w_scr_t1:
1243
.size_x     dw 16 ;+0
1244
rb 2+2+2
1245
.btn_high   dd 15 ;+8
1246
.type	    dd 1  ;+12
1247
.max_area   dd 100  ;+16
1248
rb 4+4
1249
.bckg_col   dd 0xeeeeee ;+28
1250
.frnt_col   dd 0xbbddff ;+32
1251
.line_col   dd 0  ;+36
1252
rb 4+2+2
1253
.run_x:
3475 IgorA 1254
rb 32
1706 IgorA 1255
.all_redraw dd 0 ;+80
1256
.ar_offset  dd 1 ;+84
1257
 
1258
align 4
1259
w_scr_t2:
1260
.size_x     dw 16 ;+0
1261
rb 2+2+2
1262
.btn_high   dd 15 ;+8
1263
.type	    dd 1  ;+12
1264
.max_area   dd 100  ;+16
1265
rb 4+4
1266
.bckg_col   dd 0xeeeeee ;+28
1267
.frnt_col   dd 0xbbddff ;+32
1268
.line_col   dd 0  ;+36
1269
rb 4+2+2
1270
.run_x:
3475 IgorA 1271
rb 32
1706 IgorA 1272
.all_redraw dd 0 ;+80
1273
.ar_offset  dd 1 ;+84
1274
 
5917 IgorA 1275
;данные для диалога открытия файлов
1276
align 4
1277
OpenDialog_data:
1278
.type			dd 0 ;0 - открыть, 1 - сохранить, 2 - выбрать дтректорию
1279
.procinfo		dd procinfo	;+4
1280
.com_area_name		dd communication_area_name	;+8
1281
.com_area		dd 0	;+12
1282
.opendir_path		dd plugin_path	;+16
1283
.dir_default_path	dd default_dir ;+20
1284
.start_path		dd file_name ;+24 путь к диалогу открытия файлов
1285
.draw_window		dd draw_window	;+28
1286
.status 		dd 0	;+32
1287
.openfile_path		dd openfile_path	;+36 путь к открываемому файлу
1288
.filename_area		dd filename_area	;+40
1289
.filter_area		dd Filter
1290
.x:
1291
.x_size 		dw 420 ;+48 ; Window X size
1292
.x_start		dw 10 ;+50 ; Window X position
1293
.y:
1294
.y_size 		dw 320 ;+52 ; Window y size
1295
.y_start		dw 10 ;+54 ; Window Y position
1296
 
9587 vitalkrilo 1297
default_dir db '/sys',0
5917 IgorA 1298
 
1299
communication_area_name:
1300
	db 'FFFFFFFF_open_dialog',0
1301
open_dialog_name:
1302
	db 'opendial',0
1303
communication_area_default_path:
9587 vitalkrilo 1304
	db '/sys/File managers/',0
5917 IgorA 1305
 
1306
Filter:
1307
dd Filter.end - Filter ;.1
1308
.1:
1309
db 'CED',0
1310
db 'ASM',0
1311
.end:
1312
db 0
1313
 
1314
 
1706 IgorA 1315
data_of_code dd 0
1316
sc system_colors
1317
 
1318
image_data dd 0 ;память для преобразования картинки функциями libimg
1319
 
1320
text_buffer db BUF_SIZE dup(0)
1321
fn_obj_opt db 'ob_o.opt',0
1322
obj_opt ObjOpt
1714 IgorA 1323
	rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)+MAX_OBJ_CAPTIONS
1706 IgorA 1324
	db 0 ;eof options
1325
 
1326
cur_x dd 0
1327
cur_y dd 0
1328
foc_obj dd 0 ;объект в фокусе
1717 IgorA 1329
obj_count_txt_props dd 0 ;количество используемых текстовых свойств
1706 IgorA 1330
obj_m_win dd 0 ;структура главного окна
1331
 
1332
	system_dir0 db '/sys/lib/'
1333
	lib0_name db 'box_lib.obj',0
1334
 
1335
	system_dir1 db '/sys/lib/'
1336
	lib1_name db 'proc_lib.obj',0
1337
 
1338
	system_dir2 db '/sys/lib/'
1339
	lib2_name db 'buf2d.obj',0
1340
 
1341
	system_dir3 db '/sys/lib/'
1342
	lib3_name db 'libimg.obj',0
1343
 
1344
	system_dir4 db '/sys/lib/'
1345
	lib4_name db 'msgbox.obj',0
1346
 
1347
align 4
1348
import_buf2d_lib:
1349
	dd sz_lib_init
1350
	buf2d_create dd sz_buf2d_create
1351
	buf2d_create_f_img dd sz_buf2d_create_f_img
1352
	buf2d_clear dd sz_buf2d_clear
1353
	buf2d_draw dd sz_buf2d_draw
1354
	buf2d_delete dd sz_buf2d_delete
1355
	buf2d_line dd sz_buf2d_line
1356
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1357
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1727 IgorA 1358
	;buf2d_circle dd sz_buf2d_circle
1706 IgorA 1359
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1360
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1361
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1362
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1363
	buf2d_bit_blt dd sz_buf2d_bit_blt
1364
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1365
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1727 IgorA 1366
	;buf2d_curve_bezier dd sz_buf2d_curve_bezier
1706 IgorA 1367
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1368
	buf2d_draw_text dd sz_buf2d_draw_text
1727 IgorA 1369
	;buf2d_crop_color dd sz_buf2d_crop_color
1706 IgorA 1370
	buf2d_offset_h dd sz_buf2d_offset_h
1371
dd 0,0
1372
	sz_lib_init db 'lib_init',0
1373
	sz_buf2d_create db 'buf2d_create',0
1374
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1375
	sz_buf2d_clear db 'buf2d_clear',0
1376
	sz_buf2d_draw db 'buf2d_draw',0
1377
	sz_buf2d_delete db 'buf2d_delete',0
1378
	sz_buf2d_line db 'buf2d_line',0
1379
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;рисование прямоугольника, 2-я координата задана по размеру
1380
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1727 IgorA 1381
	;sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
1706 IgorA 1382
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1383
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1384
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1385
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1386
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1387
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1388
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1727 IgorA 1389
	;sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1706 IgorA 1390
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1391
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1727 IgorA 1392
	;sz_buf2d_crop_color db 'buf2d_crop_color',0
1706 IgorA 1393
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1394
 
1395
align 4
1396
import_box_lib:
1397
	dd alib_init2
1398
 
1399
	edit_box_draw dd aEdit_box_draw
1400
	edit_box_key dd aEdit_box_key
1401
	edit_box_mouse dd aEdit_box_mouse
1402
	edit_box_set_text dd aEdit_box_set_text
1403
 
1714 IgorA 1404
	init_checkbox dd aInit_checkbox
1405
	check_box_draw dd aCheck_box_draw
1406
	check_box_mouse dd aCheck_box_mouse
1407
 
1706 IgorA 1408
	scrollbar_ver_draw dd aScrollbar_ver_draw
1409
	scrollbar_hor_draw dd aScrollbar_hor_draw
1410
 
1411
	tl_data_init dd sz_tl_data_init
1412
	tl_data_clear dd sz_tl_data_clear
1413
	tl_info_clear dd sz_tl_info_clear
1414
	tl_key dd sz_tl_key
1415
	tl_mouse dd sz_tl_mouse
1416
	tl_draw dd sz_tl_draw
1417
	tl_info_undo dd sz_tl_info_undo
1418
	tl_info_redo dd sz_tl_info_redo
1419
	tl_node_add dd sz_tl_node_add
1420
	tl_node_set_data dd sz_tl_node_set_data
1421
	tl_node_get_data dd sz_tl_node_get_data
1422
	tl_node_delete dd sz_tl_node_delete
1423
	tl_node_move_up dd sz_tl_node_move_up
1424
	tl_node_move_down dd sz_tl_node_move_down
1425
	tl_cur_beg dd sz_tl_cur_beg
1426
	tl_cur_next dd sz_tl_cur_next
1427
	tl_cur_perv dd sz_tl_cur_perv
1428
	tl_node_close_open dd sz_tl_node_close_open
1429
	tl_node_lev_inc dd sz_tl_node_lev_inc
1430
	tl_node_lev_dec dd sz_tl_node_lev_dec
1431
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1432
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1433
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1434
 
1435
	ted_but_sumb_upper dd sz_ted_but_sumb_upper
1436
	ted_but_sumb_lover dd sz_ted_but_sumb_lover
1437
	ted_can_save dd sz_ted_can_save
1438
	ted_clear dd sz_ted_clear
1439
	ted_delete dd sz_ted_delete
1440
	ted_draw dd sz_ted_draw
1441
	ted_init dd sz_ted_init
1442
	ted_init_scroll_bars dd sz_ted_init_scroll_bars
1443
	ted_init_syntax_file dd sz_ted_init_syntax_file
1444
	ted_is_select dd sz_ted_is_select
1445
	ted_key dd sz_ted_key
1446
	ted_mouse dd sz_ted_mouse
1447
	ted_open_file dd sz_ted_open_file
5917 IgorA 1448
	ted_save_file dd sz_ted_save_file
1706 IgorA 1449
	ted_text_add dd sz_ted_text_add
1450
	ted_but_select_word dd sz_ted_but_select_word
1451
	ted_but_cut dd sz_ted_but_cut
1452
	ted_but_copy dd sz_ted_but_copy
1453
	ted_but_paste dd sz_ted_but_paste
1454
	ted_but_undo dd sz_ted_but_undo
1455
	ted_but_redo dd sz_ted_but_redo
1456
	ted_but_reverse dd sz_ted_but_reverse
8083 IgorA 1457
	ted_but_find dd sz_ted_but_find
1706 IgorA 1458
	ted_text_colored dd sz_ted_text_colored
1459
	;version_text_edit dd sz_ted_version
1460
 
1461
dd 0,0
1462
 
1463
	alib_init2 db 'lib_init',0
1464
 
9568 IgorA 1465
	aEdit_box_draw	db 'edit_box_draw',0
1706 IgorA 1466
	aEdit_box_key	db 'edit_box_key',0
1467
	aEdit_box_mouse db 'edit_box_mouse',0
1468
	aEdit_box_set_text db 'edit_box_set_text',0
1469
 
1714 IgorA 1470
	aInit_checkbox db 'init_checkbox2',0
1471
	aCheck_box_draw db 'check_box_draw2',0
1472
	aCheck_box_mouse db 'check_box_mouse2',0
1473
 
1706 IgorA 1474
	aScrollbar_ver_draw  db 'scrollbar_v_draw',0
1475
	aScrollbar_hor_draw  db 'scrollbar_h_draw',0
1476
 
1477
	sz_tl_data_init db 'tl_data_init',0
1478
	sz_tl_data_clear db 'tl_data_clear',0
1479
	sz_tl_info_clear db 'tl_info_clear',0
1480
	sz_tl_key db 'tl_key',0
1481
	sz_tl_mouse db 'tl_mouse',0
1482
	sz_tl_draw db 'tl_draw',0
1483
	sz_tl_info_undo db 'tl_info_undo',0
1484
	sz_tl_info_redo db 'tl_info_redo',0
1485
	sz_tl_node_add db 'tl_node_add',0
1486
	sz_tl_node_set_data db 'tl_node_set_data',0
1487
	sz_tl_node_get_data db 'tl_node_get_data',0
1488
	sz_tl_node_delete db 'tl_node_delete',0
1489
	sz_tl_node_move_up db 'tl_node_move_up',0
1490
	sz_tl_node_move_down db 'tl_node_move_down',0
1491
	sz_tl_cur_beg db 'tl_cur_beg',0
1492
	sz_tl_cur_next db 'tl_cur_next',0
1493
	sz_tl_cur_perv db 'tl_cur_perv',0
1494
	sz_tl_node_close_open db 'tl_node_close_open',0
1495
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1496
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1497
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1498
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1499
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1500
 
1501
	sz_ted_but_sumb_upper	db 'ted_but_sumb_upper',0
1502
	sz_ted_but_sumb_lover	db 'ted_but_sumb_lover',0
1503
	sz_ted_can_save 		db 'ted_can_save',0
1504
	sz_ted_clear			db 'ted_clear',0
1505
	sz_ted_delete			db 'ted_delete',0
1506
	sz_ted_draw				db 'ted_draw',0
1507
	sz_ted_init				db 'ted_init',0
1508
	sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
1509
	sz_ted_init_syntax_file db 'ted_init_syntax_file',0
1510
	sz_ted_is_select		db 'ted_is_select',0
1511
	sz_ted_key				db 'ted_key',0
1512
	sz_ted_mouse			db 'ted_mouse',0
1513
	sz_ted_open_file		db 'ted_open_file',0
5917 IgorA 1514
	sz_ted_save_file		db 'ted_save_file',0
1706 IgorA 1515
	sz_ted_text_add 		db 'ted_text_add',0
1516
	sz_ted_but_select_word	db 'ted_but_select_word',0
1517
	sz_ted_but_cut			db 'ted_but_cut',0
1518
	sz_ted_but_copy 		db 'ted_but_copy',0
1519
	sz_ted_but_paste		db 'ted_but_paste',0
1520
	sz_ted_but_undo 		db 'ted_but_undo',0
1521
	sz_ted_but_redo 		db 'ted_but_redo',0
1522
	sz_ted_but_reverse		db 'ted_but_reverse',0
8083 IgorA 1523
	sz_ted_but_find			db 'ted_but_find',0
1706 IgorA 1524
	sz_ted_text_colored		db 'ted_text_colored',0
1525
	;sz_ted_version db 'version_text_edit',0
1526
 
1527
align 4
1528
import_proc_lib:
1529
	OpenDialog_Init dd aOpenDialog_Init
1530
	OpenDialog_Start dd aOpenDialog_Start
1531
dd 0,0
1532
	aOpenDialog_Init db 'OpenDialog_init',0
1533
	aOpenDialog_Start db 'OpenDialog_start',0
1534
 
1535
align 4
1536
import_libimg:
1537
	dd alib_init1
1538
	img_is_img  dd aimg_is_img
1539
	img_info    dd aimg_info
1540
	img_from_file dd aimg_from_file
1541
	img_to_file dd aimg_to_file
1542
	img_from_rgb dd aimg_from_rgb
1543
	img_to_rgb  dd aimg_to_rgb
1544
	img_to_rgb2 dd aimg_to_rgb2
1545
	img_decode  dd aimg_decode
1546
	img_encode  dd aimg_encode
1547
	img_create  dd aimg_create
1548
	img_destroy dd aimg_destroy
1549
	img_destroy_layer dd aimg_destroy_layer
1550
	img_count   dd aimg_count
1551
	img_lock_bits dd aimg_lock_bits
1552
	img_unlock_bits dd aimg_unlock_bits
1553
	img_flip    dd aimg_flip
1554
	img_flip_layer dd aimg_flip_layer
1555
	img_rotate  dd aimg_rotate
1556
	img_rotate_layer dd aimg_rotate_layer
1557
	img_draw    dd aimg_draw
1558
 
1559
dd 0,0
1560
 
1561
	alib_init1   db 'lib_init',0
1562
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
1563
	aimg_info    db 'img_info',0
1564
	aimg_from_file db 'img_from_file',0
1565
	aimg_to_file db 'img_to_file',0
1566
	aimg_from_rgb db 'img_from_rgb',0
1567
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
1568
	aimg_to_rgb2 db 'img_to_rgb2',0
1569
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
1570
	aimg_encode  db 'img_encode',0
1571
	aimg_create  db 'img_create',0
1572
	aimg_destroy db 'img_destroy',0
1573
	aimg_destroy_layer db 'img_destroy_layer',0
1574
	aimg_count   db 'img_count',0
1575
	aimg_lock_bits db 'img_lock_bits',0
1576
	aimg_unlock_bits db 'img_unlock_bits',0
1577
	aimg_flip    db 'img_flip',0
1578
	aimg_flip_layer db 'img_flip_layer',0
1579
	aimg_rotate  db 'img_rotate',0
1580
	aimg_rotate_layer db 'img_rotate_layer',0
1581
	aimg_draw    db 'img_draw',0
1582
 
1583
align 4
1584
import_msgbox_lib:
1585
	mb_create dd amb_create
1586
	mb_reinit dd amb_reinit
1587
	mb_setfunctions dd amb_setfunctions
1588
dd 0,0
1589
	amb_create db 'mb_create',0
1590
	amb_reinit db 'mb_reinit',0
1591
	amb_setfunctions db 'mb_setfunctions',0
1592
 
1593
;library structures
1594
l_libs_start:
8236 IgorA 1595
	lib0 l_libs lib0_name, library_path, system_dir0, import_box_lib
1596
	lib1 l_libs lib1_name, library_path, system_dir1, import_proc_lib
1597
	lib2 l_libs lib2_name, library_path, system_dir2, import_buf2d_lib
1598
	lib3 l_libs lib3_name, library_path, system_dir3, import_libimg
1599
	lib4 l_libs lib4_name, library_path, system_dir4, import_msgbox_lib
1706 IgorA 1600
load_lib_end:
1601
 
1602
 
1603
align 16
1604
run_file_70 FileInfoBlock
3465 IgorA 1605
open_b rb 560
1706 IgorA 1606
 
3475 IgorA 1607
IncludeIGlobals
1706 IgorA 1608
i_end:
3475 IgorA 1609
IncludeUGlobals
5917 IgorA 1610
	procinfo process_information
1706 IgorA 1611
	buf_cmd_lin rb 1024
3465 IgorA 1612
	file_name rb 1024 ;icon file path
1706 IgorA 1613
	fp_obj_opt rb 1024 ;obj options file patch
1614
	rb 1024
1714 IgorA 1615
	prop_thread:
1616
	rb 1024
1706 IgorA 1617
	thread: ;вверху дочерний стек для окна сообщения
1618
	rb 1024
1619
stacktop: ;вверху стек основной программы
1620
	sys_path rb 1024
1621
	library_path rb 1024
5917 IgorA 1622
	plugin_path rb 4096
1623
	openfile_path rb 4096
1624
	filename_area rb 256
1706 IgorA 1625
mem: