Subversion Repositories Kolibri OS

Rev

Rev 1698 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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