1) 'kol_f_edit'
2) documentation 'info_checkbox.htm'

git-svn-id: svn://kolibrios.org@1714 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-12-08 18:45:24 +00:00
parent f19e882566
commit 210849b561
9 changed files with 716 additions and 351 deletions

View File

@ -164,7 +164,7 @@ push ebx
cmp eax,0
je .find_no
cmp byte[eax],C_ST
cmp byte[eax],C_STR
jne @f
stdcall get_code_struct,eax ;îáðàáîòêà îáúåêòà
stdcall dword[tl_node_poi_get_next_info], esi,tree2
@ -181,31 +181,31 @@ push ebx
stdcall [ted_text_add], tedit0,txt_ends,6,ted_opt_ed_move_cursor
jmp .beg_iterat
@@:
cmp byte[eax],C_TT
cmp byte[eax],C_TXT
jne @f
stdcall get_code_text,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_IN
cmp byte[eax],C_INC
jne @f
stdcall get_code_incl,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_CO
cmp byte[eax],C_COM
jne @f
stdcall get_code_comment,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_VR
cmp byte[eax],C_VAR
jne @f
stdcall get_code_variable,eax,ebx ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_WI
cmp byte[eax],C_WND
jne @f
stdcall get_code_window,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_AC
cmp byte[eax],C_ACO
jne @f
stdcall get_code_auto,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_KE ;êëàâèàòóðà
cmp byte[eax],C_KEY ;êëàâèàòóðà
jne @f
stdcall get_code_key,eax ;îáðàáîòêà îáúåêòà
@@:
@ -298,7 +298,7 @@ proc get_code_auto_m
cmp ebx,0
je .find_no
cmp byte[ebx],C_ED
cmp byte[ebx],C_EDB
jne @f
stdcall insert_text, txt_std_mouse_ed
;insert_sp
@ -307,7 +307,7 @@ proc get_code_auto_m
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
@@:
cmp byte[ebx],C_CB
cmp byte[ebx],C_CHB
jne @f
stdcall insert_text, txt_std_mouse_cb
;insert_sp
@ -343,7 +343,7 @@ proc get_code_auto_data_el
cmp ebx,0
je .find_no
cmp byte[ebx],C_ED
cmp byte[ebx],C_EDB
jne @f
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
stdcall insert_text_prop, ebx,0
@ -362,7 +362,7 @@ proc get_code_auto_data_el
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
stdcall insert_text, txt_mouse_dd
@ -396,11 +396,11 @@ proc get_code_auto_data_el
.null_string:
insert_nl
@@:
cmp byte[ebx],C_DT
cmp byte[ebx],C_DTT
jne @f
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
stdcall insert_text, txt_db
stdcall insert_text_prop, ebx,0
@ -440,7 +440,7 @@ proc get_code_auto_data_libs_param
stdcall insert_text, txt_sys_dir
;object code
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
stdcall insert_text,txt_db
;stdcall insert_text, txt_str_beg
@ -508,7 +508,7 @@ proc get_code_auto_data_libs_struc
stdcall insert_text, txt_lib
;object code
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
insert_sp
stdcall insert_text, txt_ll
@ -666,12 +666,12 @@ proc get_code_auto_data_dop
cmp ebx,0
je .find_no
cmp byte[ebx],C_ED
cmp byte[ebx],C_EDB
jne @f
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
stdcall get_obj_text_col,ebx,10
@ -690,7 +690,7 @@ proc get_code_auto_data_dop
stdcall insert_text, txt_rb
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
stdcall insert_text, txt_minus
@ -717,7 +717,7 @@ proc get_code_auto_data_dop
insert_0
insert_nl
@@:
;cmp byte[ebx],C_CB
;cmp byte[ebx],C_CHB
;jne @f
;@@:
@ -745,7 +745,7 @@ proc get_code_auto_but
cmp ebx,0
je .find_no
cmp byte[ebx],C_BU
cmp byte[ebx],C_BUT
jne @f
insert_tab
insert_cmp
@ -797,7 +797,7 @@ proc get_code_a_but_fun
cmp ebx,0
je .find_no
cmp byte[ebx],C_BU
cmp byte[ebx],C_BUT
jne @f
stdcall get_obj_text_col,ebx,6
stdcall str_len,edx
@ -851,7 +851,7 @@ proc get_code_funct_key
cmp ebx,0
je .find_no
cmp byte[ebx],C_ED
cmp byte[ebx],C_EDB
jne @f
stdcall insert_text, txt_std_key_ed
stdcall insert_text_prop,ebx,0
@ -984,19 +984,19 @@ proc get_code_draw_obj
cmp ebx,0
je .find_no
cmp byte[ebx],C_ED
cmp byte[ebx],C_EDB
jne @f
stdcall insert_text, txt_editb_draw
stdcall insert_text_prop, ebx,0
insert_nl
@@:
cmp byte[ebx],C_CB
cmp byte[ebx],C_CHB
jne @f
stdcall insert_text, txt_cbox_draw
stdcall insert_text_prop, ebx,0
insert_nl
@@:
cmp byte[ebx],C_BU
cmp byte[ebx],C_BUT
jne @f
insert_tab
stdcall insert_text, txt_mov
@ -1048,7 +1048,7 @@ proc get_code_draw_obj
stdcall insert_text, txt_i_40
insert_nl
@@:
cmp byte[ebx],C_RE
cmp byte[ebx],C_REC
jne @f
insert_tab
stdcall insert_text, txt_mov
@ -1087,7 +1087,7 @@ proc get_code_draw_obj
stdcall insert_text, txt_i_40
insert_nl
@@:
cmp byte[ebx],C_DT ;ðèñîâàíèå òåêñòà ÷åðåç ñèñò. ô. 4
cmp byte[ebx],C_DTT ;ðèñîâàíèå òåêñòà ÷åðåç ñèñò. ô. 4
jne @f
insert_tab
stdcall insert_text, txt_mov
@ -1120,7 +1120,7 @@ proc get_code_draw_obj
insert_coma
stdcall insert_text, txt_txt
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall get_obj_id_str, ebx,edx
stdcall insert_text,edx
insert_nl
@ -1295,8 +1295,11 @@ txt_key_2:
db 9,'jmp still',13
txt_key_3:
;ïîëó÷àåì ïîðÿäêîâûé íîìåð îáúåêòà îòíîñèòåëüíî ïàìÿòè ýëåìåíòà tree2
;output:
; txt_buf - ñòðîêà ñ íîìåðîì îáúåêòà
align 4
proc get_obj_id, p_obj:dword, txt_buf:dword
proc get_obj_id_str, p_obj:dword, txt_buf:dword
push eax ecx edx
mov eax,dword[p_obj]
sub eax,[tree2.data_info]
@ -1312,6 +1315,22 @@ proc get_obj_id, p_obj:dword, txt_buf:dword
ret
endp
;ïîëó÷àåì ïîðÿäêîâûé íîìåð îáúåêòà îòíîñèòåëüíî ïàìÿòè ýëåìåíòà tree2
;output:
; eax - íîìåð îáúåêòà
align 4
proc get_obj_id, p_obj:dword
push ecx edx
mov eax,dword[p_obj]
sub eax,[tree2.data_info]
xor edx,edx
xor ecx,ecx
mov cx,word[tree2.info_size]
div ecx
pop edx ecx
ret
endp
;--- òåêñòîâûå ôóíêöèè ---
align 4

View File

@ -24,7 +24,7 @@ pushad
@@:
xor edx,edx
mov dl,C_WI
mov dl,C_WND
stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®ª­ 
cmp eax,0
je .end_draw
@ -81,15 +81,15 @@ pushad
.end_skin:
xor edx,edx ;à¨á㥬 £à ä¨ç¥áª¨¥ í«¥¬¥­âë
mov dl,C_BU
mov dl,C_BUT
stdcall draw_arr_objects, edx,draw_obj_but
mov dl,C_ED
mov dl,C_EDB
stdcall draw_arr_objects, edx,draw_obj_edit
mov dl,C_CB
mov dl,C_CHB
stdcall draw_arr_objects, edx,draw_obj_check
mov dl,C_DT
mov dl,C_DTT
stdcall draw_arr_objects, edx,draw_obj_text
mov dl,C_RE
mov dl,C_REC
stdcall draw_arr_objects, edx,draw_obj_rect_f13
.end_draw:

View File

@ -1,91 +1,3 @@
align 4
draw_obj_info: ;®ª­® ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
mov eax,13 ;rect
mov edx,WND_CAPT_COLOR
mov ebx,[wndObjI.left]
shl ebx,16
add ebx,[wndObjI.width]
mov ecx,[wndObjI.top]
add ecx,[recMain.top]
shl ecx,16
add ecx,[wndObjI.height]
sub ecx,[recMain.top]
mov edx,0xffffff ;0x80ffffff
int 0x40 ;¯àאַ㣮«ì­¨ª ¤«ï ®ª­ 
mov ecx,[wndObjI.top] ;draw caption
shl ecx,16
add ecx,[recMain.top]
mov edx,WND_CAPT_COLOR
int 0x40
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
cmp edx,0
je .exit_fun
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pushad
;draw caption wndObjI
mov eax,4 ;¯®¤¯¨áì - ­ §¢ ­¨¥ ®¡ê¥ªâ 
mov bl,[edx]
call find_obj_in_opt
mov edx,edi
mov ebx,[wndObjI.left]
add ebx,[recMain.left]
add ebx,4
shl ebx,16
add ebx,[wndObjI.top]
add ebx,4
mov ecx,0xc0d000ff
mov edi,WND_CAPT_COLOR
add edx,obj_opt.info-obj_opt
int 0x40
mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
mov ebx,[wndObjI.left]
add ebx,119
shl ebx,16
add ebx,18
mov ecx,[wndObjI.top]
add ecx,1
shl ecx,16
add ecx,18
mov edx,10
mov esi,0xd040
int 0x40
ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ¨ª®­ª¨
ror ecx,16
and ebx,0xffff
and ecx,0xffff
inc ebx
inc ecx
stdcall draw_icon, 17,ebx,ecx ;17 - save
mov edi,edit2
.cycle:
stdcall [edit_box_draw], edi ;à¨á㥬 ¯®«ï ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
popad
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
xor ebx,ebx ;­®¬¥à ¯®«ï
.draw_column:
mov eax,ebx
imul eax,[recMain.height]
add eax,[recMain.top]
add eax,[wndObjI.top]
stdcall draw_icon_obj,[edx],ebx,eax
inc ebx
cmp ebx,MAX_OPT_FIELDS
jl .draw_column
.exit_fun:
ret
;¯®¤­¨¬ ¥¬ ®¡ê¥ªâ ¢¢¥àå ¯® ᯨáªã
align 4
@ -134,20 +46,47 @@ align 4
but_element_change:
;foc_obj - 㪠§ â¥«ì ­  ¯®á«¥¤­¨© ¢ë¡à ­­ë© 㧥« ¢ tree2
cmp dword[foc_obj],0
je @f
je .err_obj
pushad
;ãáâ ­®¢ª  ⥪á⮢ëå ᢮©áâ¢
xor ebx,ebx
mov edi,edit2
.cycle:
@@:
call get_obj_win_param
inc ebx
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
jl @b
;ãáâ ­®¢ª  áá뫪¨ ­  ®¡ê¥ªâ ⨯ 
mov edx,dword[foc_obj]
mov dword[edx+u_object.typid-u_object],0 ;­  á«ãç © ¥á«¨ ­¨ç¥£® ­¥ ¢ë¡à ­®
stdcall [tl_node_get_data],tree3
pop eax
cmp eax,0
je @f
mov eax,dword[eax] ;¡¥à¥¬ ¯®à浪®¢ë© ­®¬¥à (¢ ¯ ¬ïâ¨) ¢ë¡à ­­®£® ®¡ê¥ªâ 
mov dword[edx+u_object.typid-u_object],eax
@@:
;ãáâ ­®¢ª  «®£¨ç¥áª¨å ᢮©áâ¢
mov edi,ch1.flags
mov eax,1
xor ebx,ebx
@@:
bt dword[edi],1 ;¯®ç¥¬ã ®­® âãâ ­¥ à ¡®â ¥â ï ­¥ §­ î ... ???
jnc .opt_no_sel
or ebx,eax ;­ ª®¯«¥­¨¥ ®â¬¥ç¥­­ëå ®¯æ¨©
.opt_no_sel:
shl eax,1
add edi,ch_struc_size
cmp edi,check_boxes_end
jl @b
mov dword[edx+u_object.modif-u_object],ebx
popad
@@:
.err_obj:
call draw_constructor ;®¡­®¢«ï¥¬ ®ª­® ª®­áâàãªâ®à 
call draw_window
;call draw_window
ret
;input:
@ -259,7 +198,7 @@ pop ebx
endp
align 4
proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
proc draw_obj_icon, o_type:dword,n_col:dword, coord_y:dword
pushad
xor ebx,ebx
mov bl,byte[o_type]
@ -283,8 +222,7 @@ proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
mov eax,7
mov ecx,0x100010 ;ecx - size:16*16
mov edx,[wndObjI.left]
add edx,3 ;®âáâ㯠®â «¥¢®£® ªà ï à ¬ª¨ ¤® ¨ª®­ª¨
mov edx,3 ;®âáâ㯠®â «¥¢®£® ªà ï à ¬ª¨ ¤® ¨ª®­ª¨
shl edx,16
add edx,[coord_y]
int 0x40
@ -293,6 +231,54 @@ proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
ret
endp
;¢ë¢®¤ ⥪áâ  á ¯®¤¯¨áìî
align 4
proc draw_obj_caption, o_type:dword,n_col:dword, coord_y:dword
pushad
stdcall get_obj_text_len_col, [foc_obj], [n_col] ;eax - ¤«¨­­  ¯®«ï
cmp eax,1
jl .no_draw
xor ebx,ebx
mov bl,byte[o_type]
call find_obj_in_opt
mov edx,edi
add edx,obj_opt.caption-obj_opt
mov eax,[n_col]
mov ebx,150
shl ebx,16
add ebx,dword[coord_y]
add ebx,3
mov ecx,0 ;text color
mov esi,edx
.beg_found:
cmp byte[esi],0
je .end_found
cmp byte[esi],'*'
je @f
inc esi
jmp .beg_found
@@:
cmp eax,0
je .end_found
dec eax
inc esi
mov edx,esi ;¯¥à¥ª«îç ¥¬ ­ ç «® áâப¨ ­  á«¥¤. ¯®¤¯¨áì
jmp .beg_found
.end_found:
cmp esi,edx
jle .no_draw
sub esi,edx ;esi = text len
mov eax,4
int 0x40
.no_draw:
popad
ret
endp
align 4
proc draw_icon, ind:dword,coord_x:dword,coord_y:dword
pushad

View File

@ -0,0 +1,342 @@
;
; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ­ã¦­ë¥ ¤«ï ᮧ¤ ­¨ï ¨
; à ¡®âë ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
;
prop_edits_top equ 25
prop_edits_height equ 18
prop_wnd_width equ 520 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
;¤ ­®¥ ®ª­® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï ä㭪樥© on_file_object_select
align 4
prop_start:
pushad
mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
; ­ áâனª  ⥪á⮢ëå ¯®«¥©
xor ebx,ebx
mov edi,edit2
@@:
stdcall set_obj_win_param, ebx,edi
inc ebx
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl @b
; ­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢, ®¯à¥¤¥«ïîé¨å â¨¯ë ¯¥à¥¬¥­­ëå
stdcall dword[tl_data_init], tree3
cmp byte[err_ini0],1
je @f
mov dword[tree3.data_img],bmp_icon
@@:
mov eax,dword[icon_tl_sys]
mov dword[tree3.data_img_sys],eax
mov edx,[foc_obj]
cmp byte[edx],C_VAR
jne .sel_end
stdcall [tl_node_poi_get_info], 0,tree2
pop edx
@@:
cmp edx,0
je @f
stdcall [tl_node_poi_get_data], edx,tree2
pop esi ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
;------ ¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  ¢ ᯨ᮪ -------------------------------------------
mov ebx,[foc_obj]
cmp ebx,esi
je .add_end ;¨§¡¥£ ¥¬ 横«¨ç¥áª®© áá뫪¨
mov bl,[esi]
cmp bl,C_TDF
je .add_beg
cmp bl,C_STR
je .add_beg
jmp .add_end
.add_beg:
stdcall get_obj_id,esi
mov edi,u_object
mov dword[edi],eax
add edi,4
inc esi ;¯¥à¥å®¤¨¬ ­  ¨¬ï ®¡ê¥ªâ 
mov ecx,MAX_LEN_OBJ_TXT
cld
rep movsb
call find_obj_in_opt ;edi = pointer to ObjOpt struct
mov cx,word[edi+obj_opt.img-obj_opt]
cmp cx,0
jge .zero
xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
.zero:
shl ecx,16 ;¢ ecx ¨­¤¥ªá ¨ª®­ª¨
stdcall dword[tl_node_add], u_object, ecx, tree3 ;áâàãªâãà  u_object ¢ ¤ ­­®¬ á«ãç ¥ ­¥ ᮡ«î¤ ¥âáï, ®­  ­ã¦­  ¯à®áâ® ª ª ¯ ¬ïâì ¤«ï ¢áâ ¢ª¨
stdcall dword[tl_cur_next], tree3 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª
.add_end:
;-------
stdcall [tl_node_poi_get_next_info], edx,tree2
pop edx ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
jmp @b
@@:
;áâ ¢¨¬ ªãàá®à ­  ­ã¦­ãî ¯®§¨æ¨î
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
cmp edx,0
je .sel_end
mov edx,dword[edx+u_object.typid-u_object]
stdcall [tl_cur_beg],tree3
@@:
stdcall [tl_node_get_data],tree3
pop eax
cmp eax,0
je .sel_end
cmp dword[eax],edx
je .sel_end ;¥á«¨ ­ è«¨ 㪠§ â¥«ì
stdcall [tl_cur_next],tree3
jmp @b
.sel_end:
;ç¨á⪠ ¯®¤¯¨á¥©
mov dword[ch1.text],ch_text
mov dword[ch2.text],ch_text
mov dword[ch3.text],ch_text
mov dword[ch4.text],ch_text
;ãáâ ­®¢ª  ­®¢ëå ¯®¤¯¨á¥©
mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
mov bl,byte[esi]
call find_obj_in_opt
mov edi,dword[edi+obj_opt.bit_prop-obj_opt]
cmp edi,0
je .no_bit_capts ;¥á«¨ 1-¥ ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥, â® ¢ 横« ­¥ § å®¤¨¬
mov edx,ch1.text
xor al,al ;0 - ᨬ¢®« ª®­æ  áâப¨
add edi,obj_opt
@@:
mov [edx],edi ;§ ¯¨á뢠¥¬ ⥪áâ ¢ check_box
xor ecx,ecx
dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
cld
repne scasb ;¨é¥¬ ª®­¥æ áâப¨ (al=0)
cmp byte[edi],0
je .no_bit_capts ;¥á«¨ á«¥¤ãî饩 áâப¨ ­¥â ¢ë室 ¨§ 横« 
add edx,ch_struc_size
cmp edx,check_boxes_end
jl @b
.no_bit_capts:
;ãáâ ­®¢ª  ä« ¦ª®¢
mov esi,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
mov edx,ch1.flags
xor eax,eax
@@:
bt dword[esi+u_object.modif-u_object],eax
jc .flag_set
btr dword[edx],1 ;á­¨¬ ¥¬ £ «®çªã
jmp .end_set
.flag_set:
bts dword[edx],1 ;áâ ¢¨¬ £ «®çªã (ch_flag_en = 10b = 2^1)
.end_set:
inc eax
add edx,ch_struc_size
cmp edx,check_boxes_end
jl @b
init_checkboxes2 check_boxes,check_boxes_end
check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc
popad
align 4
prop_red_win:
pushad
mcall 12,1
xor eax,eax
mov edi,hed
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
cmp edx,0
je @f
mov bl,[edx]
call find_obj_in_opt
add edi,obj_opt.info-obj_opt ;edi - ¯®¤¯¨áì (­ §¢ ­¨¥ ®¡ê¥ªâ )
@@:
mov ebx,30*65536+prop_wnd_width
mov ecx,50*65536+250
mov edx,0xffffd0
or edx,0x33000000
int 0x40
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
cmp edx,0
je .exit_fun
mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
mov ebx,prop_wnd_width-18-20
shl ebx,16
add ebx,18
mov ecx,3
shl ecx,16
add ecx,18
mov edx,10
mov esi,0xd040
int 0x40
ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ¨ª®­ª¨
ror ecx,16
and ebx,0xffff
and ecx,0xffff
inc ebx
inc ecx
stdcall draw_icon, 17,ebx,ecx ;17 - save
mov edi,edit2
.cycle:
stdcall [edit_box_draw], edi ;à¨á㥬 ¯®«ï ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
cmp [err_ini0],1
je .exit_fun
cmp [err_ini1],1
je .exit_fun
mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
xor ebx,ebx ;­®¬¥à ¯®«ï
.draw_column:
mov eax,ebx
imul eax,prop_edits_height
add eax,prop_edits_top
stdcall draw_obj_icon,[edx],ebx,eax
stdcall draw_obj_caption,[edx],ebx,eax
inc ebx
cmp ebx,MAX_OPT_FIELDS
jl .draw_column
cmp byte[edx],C_VAR
jne .no_tree
mov dword[w_scr_t3.all_redraw],1
stdcall [tl_draw], tree3
.no_tree:
checkboxes_draw2 check_boxes,check_boxes_end
.exit_fun:
mcall 12,2
popad
align 4
prop_still:
pushad
mcall 10
cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
jz prop_red_win
cmp al,2
jne @f
call prop_key
@@:
cmp al,3
jz prop_button
cmp al,6
jne @f
call prop_mouse
@@:
popad
jmp prop_still
align 4
prop_key:
push eax edi
mcall 2
mov edi,edit2
.cycle:
stdcall [edit_box_key], edi
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
mov edi,[foc_obj]
cmp byte[edi],C_VAR
jne @f
stdcall [tl_key], tree3
@@:
pop edi eax
ret
align 4
prop_mouse:
push edi
mov edi,edit2
.cycle:
stdcall [edit_box_mouse], edi
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
mov edi,[foc_obj]
cmp byte[edi],C_VAR
jne @f
stdcall [tl_mouse], tree3
@@:
checkboxes_mouse2 check_boxes,check_boxes_end
pop edi
ret
align 4
prop_button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
cmp ah,10
jne @f
call but_element_change
mov ah,1 ;¤«ï § ªàëâ¨ï ®ª­ 
@@:
cmp ah,1
jne prop_still
.exit:
mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
stdcall dword[tl_data_clear], tree3
mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
tree3 tree_list sizeof.object,(MAX_CED_OBJECTS shr 2)+2, tl_key_no_edit+tl_list_box_mode,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 320,30,165,125, 0,4,MAX_LEN_OBJ_TXT, el_focus,\
w_scr_t3,0
align 4
w_scr_t3:
.size_x dw 16 ;+0
rb 2+2+2
.btn_high dd 15 ;+8
.type dd 1 ;+12
.max_area dd 100 ;+16
rb 4+4
.bckg_col dd 0xeeeeee ;+28
.frnt_col dd 0xbbddff ;+32
.line_col dd 0 ;+36
rb 4+2+2
.run_x:
rb 2+2+2+2+4+4+4+4+4+4
.all_redraw dd 0 ;+80
.ar_offset dd 1 ;+84
check_boxes:
ch1 check_box2 (320 shl 16+11),(160 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
ch2 check_box2 (320 shl 16+11),(175 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
ch3 check_box2 (320 shl 16+11),(190 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
ch4 check_box2 (320 shl 16+11),(205 shl 16 +11),5,0xffffff,0,0x80000000,ch_text,ch_flag_en+ch_flag_middle
check_boxes_end:
ch_text db 0

View File

@ -16,10 +16,11 @@ include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include 'mem.inc'
include 'dll.inc'
include 'strlen.inc'
include 'obj_codes.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
hed db 'kol_f_edit 29.11.10',0
hed db 'kol_f_edit 08.12.10',0
sizeof.TreeList equ 20 ;need for element 'tree_list'
@ -33,39 +34,38 @@ buf2d_size_lt equ dword[edi+4] ;
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
MAX_LEN_OBJ_TXT equ 200
MAX_CED_OBJECTS equ 200
MAX_OPT_FIELDS equ 11
MAX_OBJ_TYPES equ 18
MAX_OBJ_TYPES equ 18 ;¬ ªá¨¬ «ì­®¥ ç¨á«® ®¡ê¥ªâ®¢
MAX_OBJ_CAPTIONS equ 1000 ;à §¬¥à ¤®¯®«­¨â¥«ì­ëå ¯®¤¯¨á¥© ¯®¤¯¨á¥©
WND_CAPT_COLOR equ 0xb0d0ff
BUF_SIZE equ 1000
C_TD equ 't' ;typedef
C_AC equ 'a' ; ¢â®¬ â¨ç¥áª¨¥ ª®¤ë (auto code)
C_ST equ 's' ;struct
C_IN equ '#' ;include
C_TT equ 'd' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VR equ '-' ;¯¥à¥¬¥­­ ï
C_CO equ ';' ;ª®¬¬¥­â à¨©
C_WI equ 'w' ;®ª­®
C_CB equ 'c' ;CheckBox
C_OP equ 'o' ;OptionBox
C_ED equ 'e' ;EditBox
C_BU equ 'b' ;Button
C_DT equ 'x' ;à¨á®¢ âì ⥪áâ
C_RE equ 'r' ;à¨á®¢ âì ¯àאַ㣮«ì­¨ª
C_KE equ 'k' ;ª« ¢¨ âãà 
C_LIB equ 'l'
C_IFN equ 'f'
;modif
CPP_MOD_ACM equ 2 ;ᮡëâ¨ï ¬ëè¨
BIT_MOD_ACM equ 1 ;ᮡëâ¨ï ¬ëè¨
CPP_MOD_ACI equ 4 ; ¢ª«î祭¨ï
BIT_MOD_ACI equ 2 ; ¢ª«î祭¨ï
CPP_MOD_ACD equ 8 ;¤ ­­ë¥ ®¡ê¥ªâ®¢
BIT_MOD_ACD equ 3 ;¤ ­­ë¥ ®¡ê¥ªâ®¢
CPP_MOD_ABU equ 16 ;á¢ï§ë¢ ­¨¥ ª­®¯®ª
BIT_MOD_ABU equ 4 ;á¢ï§ë¢ ­¨¥ ª­®¯®ª
CPP_MOD_WI_CA equ 16 ; áâ¨«ì ®ª­  ¯®¤¯¨áì
CPP_MOD_WI_AO equ 32 ; áâ¨«ì ®ª­  ª®®à¤¨­ âë ®â­®á¨â¥«ì­® ª«¨¥­â᪮© ®¡« áâ¨
CPP_MOD_WI_RD equ 64 ; áâ¨«ì ®ª­  ¯¥à¥à¨á®¢ª  ®ª­ 
CPP_MOD_WI_GR equ 128 ; áâ¨«ì ®ª­  £à ¤¨¥­â
CPP_MOD_CHE equ 512 ; ch_flag_en - ¢ë¡à ­ CheckBox
CPP_MOD_TXT_ASCII_0 equ 1 ; ⥪áâ § ª ­ç¨¢. 0
CPP_MOD_TXT_TRAN equ 4 ; ⥪á⠯஧à ç­ë©
CPP_MOD_TXT_CHAR2 equ 2 ; ⥪áâ 2-¬ èà¨ä⮬
CPP_MOD_EDIT_FOC equ 1 ; EditBox ¢ 䮪ãá¥
CPP_MOD_EDIT_FIO equ 2 ;
CPP_MOD_RE_GR equ 1 ; £à ¤¨¥­â­ë© ¯àאַ㣮«ì­¨ª
CPP_MOD_BUT_NFON equ 1 ; á⨫ì Button ­¥ à¨á®¢ âì ª­®¯ªã
CPP_MOD_BUT_NBORD equ 2 ; á⨫ì Button ­¥ à¨á®¢ âì £à ­¨æã
macro load_image_file path,buf,size ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
{
copy_path path,sys_path,fp_icon,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
@ -116,13 +116,14 @@ struct object
ends
struct ObjOpt
c db ?
db ?
bl_type db ?
graph db ?
info rb 30
caption rb 200
Col rw MAX_OPT_FIELDS
img rw MAX_OPT_FIELDS ;¨­¤¥ªáë ª à⨭®ª (¢ ä ©«¥ 'icon.bmp')
bit_prop dd 0 ;¡¨â®¢ë¥ ᢮©á⢠
ends
SKIN_H equ 22
@ -151,6 +152,7 @@ icon_font_s1 dd 0 ;㪠
fn_syntax db 'asm.syn',0 ;¨¬ï § £à㦠¥¬®£® ä ©«  ᨭ⠪á¨á 
include 'ced_wnd_m.inc'
include 'ced_wnd_prop.inc' ;ä ©« á äã­ªæ¨ï¬¨ ®ª­  ᢮©á⢠®¡ê¥ªâ 
include 'ced_constr.inc' ;ä ©« á äã­ªæ¨ï¬¨ ®ª­  ª®­áâàãªâ®à 
include 'ced_code_g.inc' ;ä ©« á äã­ªæ¨ï¬¨ £¥­¥à¨à®¢ ­¨ï ª®¤®¢
@ -180,17 +182,15 @@ start:
mcall -1 ;exit not correct
@@:
mov eax,[wndObjI.top]
add eax,[recMain.top]
inc eax
mov ebx,[wndObjI.left]
add ebx,16+6 ;è¨à¨­  ¨ª®­ª¨ + ®âáâã¯ë
;§ ¤ ­¨¥ à §¬¥à®¢ ¯®«¥© ᮠ᢮©á⢠¬¨
mov eax,prop_edits_top
mov ebx,16+6 ;è¨à¨­  ¨ª®­ª¨ + ®âáâã¯ë
mov edi,edit2
@@:
mov ed_top,eax ;®âáâ㯠ᢥàåã
mov ed_left,ebx ;®âáâ㯠᫥¢ 
add edi,ed_struc_size
add eax,[recMain.height]
add eax,prop_edits_height
cmp edi,prop_wnd_edits_end
jl @b
@ -226,8 +226,9 @@ start:
load_image_file fn_icon_tl_sys, icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
m2m dword[tree1.data_img_sys],dword[icon_tl_sys]
m2m dword[tree2.data_img_sys],dword[icon_tl_sys]
mov eax,dword[icon_tl_sys]
mov dword[tree1.data_img_sys],eax
mov dword[tree2.data_img_sys],eax
;1-© ä ©« ᪨­ 
load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE
@ -254,7 +255,7 @@ start:
;load options file
mov eax,70
mov [run_file_70.Position], 0
mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES
mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES+MAX_OBJ_CAPTIONS
mov [run_file_70.Buffer], obj_opt
mov [run_file_70.FileName], fp_obj_opt
mov ebx,run_file_70
@ -271,7 +272,7 @@ start:
cmp bl,0
je @f
;xor ecx,ecx ;¢ ecx ¡ã¤¥â ¨­¤¥ªá ¨ª®­ª¨
mov cx,word[eax+sizeof.ObjOpt-2*MAX_OPT_FIELDS]
mov cx,word[eax+obj_opt.img-obj_opt]
cmp cx,0
jge .zero
xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
@ -454,21 +455,15 @@ pushad
int 0x40
@@:
cmp [err_ini0],1
je err_init_icon
cmp [err_ini1],1
je err_init_icon
call draw_obj_info ;®ª­® । ªâ¨à®¢ ­¨ï ¢ë¡à ­­®£® ®¡ê¥ªâ 
err_init_icon:
stdcall [edit_box_draw], dword edit1
stdcall [edit_box_draw], dword edit_sav
stdcall [tl_draw],dword tree1
mov dword[w_scr_t1.all_redraw],1
stdcall [scrollbar_ver_draw],dword w_scr_t1
stdcall [tl_draw],dword tree2
;stdcall [scrollbar_ver_draw],dword w_scr_t1
stdcall [tl_draw],dword tree1
mov dword[w_scr_t2.all_redraw],1
stdcall [scrollbar_ver_draw],dword w_scr_t2
;stdcall [scrollbar_ver_draw],dword w_scr_t2
stdcall [tl_draw],dword tree2
cmp byte[show_mode],0 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠®ª­  ª®­áâàãªâ®à 
jne @f
@ -485,14 +480,6 @@ popad
align 4
mouse:
stdcall [edit_box_mouse], dword edit1
push edi
mov edi,edit2
.cycle:
stdcall [edit_box_mouse], edi
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
pop edi
stdcall [edit_box_mouse], dword edit_sav
stdcall [tl_mouse], dword tree1
stdcall [tl_mouse], dword tree2
@ -507,27 +494,10 @@ align 4
key:
mcall 2
stdcall [edit_box_key], dword edit1
push edi
mov edi,edit2
.cycle:
stdcall [edit_box_key], edi
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
pop edi
stdcall [edit_box_key], dword edit_sav
stdcall [tl_key], dword tree1
stdcall [tl_key], dword tree2
; cmp ah,178 ;Up
; jne @f
; cmp [cur_y],0
; je @f
; dec [cur_y]
; call get_obj_pos
; call draw_window
; @@:
jmp still
align 4
@ -541,10 +511,10 @@ button:
jne @f
call but_save_proj
@@:
cmp ah,10
jne @f
call but_element_change
@@:
;cmp ah,10
;jne @f
;call but_element_change
;@@:
cmp ah,11
jne @f
call but_show_constructor
@ -653,7 +623,7 @@ but_open_proj:
call find_obj_in_opt ;edi = pointer to ObjOpt struct
mov cx,word[edi+sizeof.ObjOpt-2*MAX_OPT_FIELDS]
mov cx,word[edi+obj_opt.img-obj_opt]
cmp cx,0
jge .zero
xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
@ -743,6 +713,8 @@ but_save_proj:
ret
;¡¥à¥â ­®¬¥à ¯® ¯®à浪㠯® 㪠§ â¥«î ­  áâàãªâãàã ®¡ê¥ªâ 
;output:
; eax - ­®¬¥à ®¡ê¥ªâ 
align 4
proc get_obj_npp, p_obj_str:dword
mov eax,2
@ -820,22 +792,19 @@ ted_save_err_msg:
;äã­ªæ¨ï ®¡à â­ ï ª ¤ ­­®© but_element_change
align 4
on_file_object_select:
stdcall [tl_node_get_data], tree2
pop dword[foc_obj]
cmp dword[foc_obj],0
je @f
push ebx edi
xor ebx,ebx
mov edi,edit2
.cycle:
stdcall set_obj_win_param, ebx,edi
inc ebx
add edi,ed_struc_size
cmp edi,prop_wnd_edits_end
jl .cycle
pop edi ebx
cmp byte[prop_wnd_run],0
jne @f
mov byte[prop_wnd_run],1
stdcall [tl_node_get_data], tree2
pop dword[foc_obj]
cmp dword[foc_obj],0
je @f
pushad
;¢á¥ ¤¥©áâ¢¨ï ¯® ­ áâனª¥ í«¥¬¥­â®¢ ã¯à ¢«¥­¨ï ¢ë¯®«­ïîâáï ¢ ®ª­¥ ᮠ᢮©á⢠¬¨
mcall 51,1,prop_start,prop_thread
popad
@@:
call draw_window
;call draw_window
ret
align 4
@ -944,9 +913,9 @@ buf_skin3:
show_mode db 0 ;०¨¬ ¤«ï ¯®ª §  ®¯à¥¤¥«¥­­®£® ®ª­ 
txtErrOpen db '<27>¥ ­ ©¤¥­ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì­®áâì ¨¬¥­¨',0
txtErrIni1 db '<27>¥ ®âªàë«áï ä ©« á ®¯æ¨ï¬¨',0
err_opn db 0
err_ini0 db 0 ;???
err_ini1 db 0
err_opn db 0 ;१. ®âªàëâ¨ï ä ©«  ¯à®íªâ 
err_ini0 db 0 ;१. ®âªàëâ¨ï ä ©«  á ¨ª®­ª ¬¨
err_ini1 db 0 ;१. ®âªàëâ¨ï ä ©«  á ®¯æ¨ï¬¨
edit1 edit_box 210, 10, 5, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7
@ -987,7 +956,7 @@ mouse_dd dd ?
el_focus dd tree1
;¤¥à¥¢® ᮠᯨ᪮¬ ¢®§¬®¦­ëå ⨯®¢ ®¡ê¥ªâ®¢
tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,100, 0,3,0, el_focus,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,3,0, el_focus,\
w_scr_t1,on_add_object
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\
@ -1187,15 +1156,13 @@ sc system_colors
image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
recMain BOX 3,20,16,18 ;ª®®à¤¨­ âë: 1,2 - ®âáâã¯ë; 3,4 - à §¬¥à
ced_info object 0 ;on start == 0
rb sizeof.object*(MAX_CED_OBJECTS-1)
wndObjI BOX 5,155,125+16,175
text_buffer db BUF_SIZE dup(0)
fn_obj_opt db 'ob_o.opt',0
obj_opt ObjOpt
rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)
rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)+MAX_OBJ_CAPTIONS
db 0 ;eof options
cur_x dd 0
@ -1308,6 +1275,10 @@ import_box_lib:
edit_box_mouse dd aEdit_box_mouse
edit_box_set_text dd aEdit_box_set_text
init_checkbox dd aInit_checkbox
check_box_draw dd aCheck_box_draw
check_box_mouse dd aCheck_box_mouse
scrollbar_ver_draw dd aScrollbar_ver_draw
scrollbar_hor_draw dd aScrollbar_hor_draw
@ -1370,6 +1341,10 @@ dd 0,0
aEdit_box_mouse db 'edit_box_mouse',0
aEdit_box_set_text db 'edit_box_set_text',0
aInit_checkbox db 'init_checkbox2',0
aCheck_box_draw db 'check_box_draw2',0
aCheck_box_mouse db 'check_box_mouse2',0
aScrollbar_ver_draw db 'scrollbar_v_draw',0
aScrollbar_hor_draw db 'scrollbar_h_draw',0
@ -1508,6 +1483,8 @@ i_end:
fp_icon rb 1024 ;icon file path
fp_obj_opt rb 1024 ;obj options file patch
rb 1024
prop_thread:
rb 1024
thread: ;¢¢¥àåã ¤®ç¥à­¨© á⥪ ¤«ï ®ª­  á®®¡é¥­¨ï
rb 1024
stacktop: ;¢¢¥àåã á⥪ ®á­®¢­®© ¯à®£à ¬¬ë

View File

@ -1,26 +1,8 @@
;lang equ ru
MAX_LEN_OBJ_TXT equ 200
include 'obj_codes.inc'
C_TD equ 't' ;typedef
C_AC equ 'a' ; ¢â®¬ â¨ç¥áª¨¥ ª®¤ë (auto code)
C_ST equ 's' ;struct
C_IN equ '#' ;include
C_TT equ 'd' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VR equ '-' ;¯¥à¥¬¥­­ ï
C_CO equ ';' ;ª®¬¬¥­â à¨©
C_WI equ 'w' ;®ª­®
C_CB equ 'c' ;CheckBox
C_OP equ 'o' ;OptionBox
C_ED equ 'e' ;EditBox
C_BU equ 'b' ;Button
C_DT equ 'x' ;à¨á®¢ âì ⥪áâ
C_RE equ 'r' ;à¨á®¢ âì ¯àאַ㣮«ì­¨ª
C_KE equ 'k' ;ª« ¢¨ âãà 
C_LIB equ 'l'
C_IFN equ 'f'
macro ObjOpt c,bl_type,graph,info,caption,Col,img
macro ObjOpt c,bl_type,graph,info,caption,Col,img,bit_prop
{
db c
db bl_type
@ -30,43 +12,49 @@ rb @b+30-$
@@: db caption
rb @b+MAX_LEN_OBJ_TXT-$
dw Col
dw img
dw img ;¨­¤¥ªáë ª à⨭®ª (¢ ä ©«¥ 'icon.bmp')
dd bit_prop+0
}
ObjOpt C_TD, 0,0,'’¨¯ ¤ ­­®£®','',\
ObjOpt C_TDF, 0,0,'’¨¯ ¤ ­­®£®','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_VR, 0,0,'<27>¥à¥¬¥­­ ï','¨¬ï ¯¥à¥¬¥­­®©*§­ ç¥­¨¥ ¯® 㬮«ç ­¨î*ª®¬¬¥­â à¨©',\
ObjOpt C_VAR, 0,0,'<27>¥à¥¬¥­­ ï','¨¬ï ¯¥à¥¬¥­­®©*§­ ç¥­¨¥ ¯® 㬮«ç ­¨î*ª®¬¬¥­â à¨©',\
<40, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 0, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_ST, 1,0,'‘âàãªâãà ','¨¬ï áâàãªâãàë*¯ à ¬¥âàë ¤«ï ¬ ªà®á ',\
ObjOpt C_STR, 1,0,'‘âàãªâãà ','¨¬ï áâàãªâãàë*¯ à ¬¥âàë ¤«ï ¬ ªà®á ',\
<40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_AC, 1,0,'€¢â® ª®¤','',\
ObjOpt C_ACO, 1,0,'€¢â® ª®¤','',\
<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_BU, 1,1,'Š­®¯ª ','¨¤¥­â¨ä¨ª â®à*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥â*¨¬ï ¬¥âª¨ ¯à¨ ­ ¦ â¨¨',\
<2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>,\
txt_bit_auto
ObjOpt C_BUT, 1,1,'Š­®¯ª ','¨¤¥­â¨ä¨ª â®à*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥â*¨¬ï ¬¥âª¨ ¯à¨ ­ ¦ â¨¨',\
<20, 40, 60, 80,100,120, 0, 0, 0, 0, 0>,\
<29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1>
ObjOpt C_ED, 1,1,'’¥ªá⮢®¥ ¯®«¥','***®âáâ㯠ᢥàåã*梥â ä®­ *梥⠢뤥«¥­¨ï ¯à¨ 㤥ন¢ ­¨¨ shift ¨«¨ ¬ë誮©*梥â à ¬ª¨*¯à¨ ­¥ ªâ¨¢­®¬ ¡®ªá¥ 梥â à ¬ª¨*梥â ⥪áâ *¬ ªá¨¬ «ì­ ï ¤«¨­  ⥪áâ *­ ç «ì­ë© ⥪áâ',\
<29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1>,\
txt_bit_but
ObjOpt C_EDB, 1,1,'’¥ªá⮢®¥ ¯®«¥','***®âáâ㯠ᢥàåã*梥â ä®­ *梥⠢뤥«¥­¨ï ¯à¨ 㤥ন¢ ­¨¨ shift ¨«¨ ¬ë誮©*梥â à ¬ª¨*¯à¨ ­¥ ªâ¨¢­®¬ ¡®ªá¥ 梥â à ¬ª¨*梥â ⥪áâ *¬ ªá¨¬ «ì­ ï ¤«¨­  ⥪áâ *­ ç «ì­ë© ⥪áâ',\
<30, 40, 50, 60, 80,100,120,140,160,170, 0>,\
<10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4>
ObjOpt C_OP, 1,1,'<27> ¤¨® ª­®¯ª ','¨¬ï*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *¯®¤¯¨áì*®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4>,\
txt_bit_edit
ObjOpt C_OPT, 1,1,'<27> ¤¨® ª­®¯ª ','¨¬ï*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *¯®¤¯¨áì*®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<40, 50, 60, 80,100,120,180,190, 0, 0, 0>,\
< 9, 15, 16, 25, 25, 25, 4, 26, 27, -1, -1>
ObjOpt C_CB, 1,1,'”« ¦®ª','***¯®¤¯¨áì*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
ObjOpt C_CHB, 1,1,'”« ¦®ª','***¯®¤¯¨áì*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<40, 50, 60,120,140,160,180,190, 0, 0, 0>,\
< 8, 15, 16, 4, 25, 25, 25, 26, 27, -1, -1>
ObjOpt C_TT, 1,0,'asm ª®¤','',\
< 8, 15, 16, 4, 25, 25, 25, 26, 27, -1, -1>,\
txt_bit_che
ObjOpt C_TXT, 1,0,'asm ª®¤','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_WI, 1,1,'Žª­®','**®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥⠪«¨¥­â᪮© ®¡« áâ¨*梥⠧ £®«®¢ª  (¥á«¨ ¥áâì)',\
ObjOpt C_WND, 1,1,'Žª­®','**®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥⠪«¨¥­â᪮© ®¡« áâ¨*梥⠧ £®«®¢ª  (¥á«¨ ¥áâì)',\
<98,100,110,120,130,150,170, 0, 0, 0, 0>,\
<12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1>
ObjOpt C_CO, 1,0,'Š®¬¬¥­â à¨©','áâப  ª®¬¬¥­â à¨ï',\
<12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1>,\
txt_bit_wnd
ObjOpt C_COM, 1,0,'Š®¬¬¥­â à¨©','áâப  ª®¬¬¥­â à¨ï',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_IN, 1,0,'‚ª«î祭¨¥ ä ©« ','¨¬ï ä ©« *ª®¬¬¥­â à¨©',\
ObjOpt C_INC, 1,0,'‚ª«î祭¨¥ ä ©« ','¨¬ï ä ©« *ª®¬¬¥­â à¨©',\
<100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_LIB, 1,0,'ˆ¬¯®àâ ¡¨¡«¨®â¥ª¨','¨¬ï ¡¨¡«.*á¨áâ. ¤¨à.*¬¥âª  ¨¬¯®àâ *¯à¨áâ ¢ª *®è¨¡ª  ­¥ ­ ©¤¥­ *®è¨¡ª  ­¥ ¬®£ã ®âªàëâì',\
@ -75,18 +63,44 @@ ObjOpt C_LIB, 1,0,'
ObjOpt C_IFN, 1,0,'”ã­ªæ¨ï ¨§ ¡¨¡«¨®â¥ª¨','¯à®£à ¬­®¥ ¨¬ï ä㭪樨*¨¬¯®àâ¨à㥬®¥ ¨¬ï ä㭪樨',\
<100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_DT, 1,1,'<27>¨á®¢ ­¨¥ ⥪áâ ','***梥â ⥪áâ *梥â ä®­  (¥á«¨ ¥áâì)',\
ObjOpt C_DTT, 1,1,'<27>¨á®¢ ­¨¥ ⥪áâ ','⥪á⮢ ï áâப *ª®®à¤¨­ â  ¯® x*ª®®à¤¨­ â  ¯® y*梥â ⥪áâ *梥â ä®­  (¥á«¨ ¥áâì)',\
<40, 50, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
< 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1>
ObjOpt C_RE, 1,1,'<27>àאַ㣮«ì­¨ª','梥â*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â ',\
< 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1>,\
txt_bit_caption
ObjOpt C_REC, 1,1,'<27>àאַ㣮«ì­¨ª','梥â*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â ',\
<20, 40, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
<25, 15, 16, 26, 27, -1, -1, -1, -1, -1, -1>
ObjOpt C_KE, 1,0,'‘®¡ë⨥ ­  ª« ¢¨ âãàã','',\
ObjOpt C_KEY, 1,0,'‘®¡ë⨥ ­  ª« ¢¨ âãàã','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt 0x0d, 1,0, '-','',\
<20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
dd 0 ;à §¤¥«¨â¥«ì
;­ §¢ ­¨ï ¡¨â®¢ëå ᢮©áâ¢
txt_bit_auto db '¯®¤ª«î祭¨ï ä ©«®¢',0
db 'ᮡëâ¨ï ®â ¬ëè¨',0
db 'ª®¤ë í«¥¬¥­â®¢',0
db '­ ¦ â¨ï ­  ª­®¯ª¨',0
db 0
txt_bit_wnd db '¯®¤¯¨áì ®ª­ ',0
db '®ª­® ­¥ § ªà è¨¢ ¥â ª«¨¥­âáªãî ®¡«.',0
db 'ª®®à¤. ®â­®á¨â¥«ì­® ª«¨¥­â᪮© ®¡«.',0
db '£à ¤¨¥­â­ ï § «¨¢ª  à ¡. ®¡«.',0
db 0
txt_bit_edit db '¢ 䮪ãá¥',0
db 'æ¨äàë ®â 0-9',0
db 0
txt_bit_che db 'check_box ¢ë¡à ­',0
db 0
txt_bit_but db '­¥ à¨á®¢ âì ª­®¯ªã',0
db '­¥ à¨á®¢ âì £à ­¨æ㠯ਠ­ ¦ â¨¨',0
db 0
txt_bit_caption db 'áâப  ASCII § ª ­ç. 0',0
db '§ «¨¢ª  ä®­ ',0
db '2-© èà¨äâ',0
db 0

View File

@ -0,0 +1,23 @@
;
; ¢ í⮬ ä ©«¥ á®¡à ­ë ª®¤ë ®¡ê¥ªâ®¢
;
C_TDF equ 't' ;typedef
C_ACO equ 'a' ; ¢â®¬ â¨ç¥áª¨¥ ª®¤ë (auto code)
C_STR equ 's' ;struct
C_INC equ '#' ;include
C_TXT equ 'd' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VAR equ '-' ;¯¥à¥¬¥­­ ï
C_COM equ ';' ;ª®¬¬¥­â à¨©
C_WND equ 'w' ;®ª­®
C_CHB equ 'c' ;CheckBox
C_OPT equ 'o' ;OptionBox
C_EDB equ 'e' ;EditBox
C_BUT equ 'b' ;Button
C_DTT equ 'x' ;à¨á®¢ âì ⥪áâ
C_REC equ 'r' ;à¨á®¢ âì ¯àאַ㣮«ì­¨ª
C_KEY equ 'k' ;ª« ¢¨ âãà 
C_LIB equ 'l' ;¡¨¡«¨®â¥ª 
C_IFN equ 'f' ;¡¨¡«¨®â¥ç­ ï ¯®¤ª«îç ¥¬ ï äã­ªæ¨ï
MAX_LEN_OBJ_TXT equ 200

View File

@ -55,6 +55,7 @@
<p>Âåðñèÿ ýëåìåíòà</p>
<h1><a name="struc_checkbox2">Ñòðóêòóðà checkbox2</a></h1>
<p>Размер структуры checkbox2 указан внутри файла <i>box_lib.mac</i> в параметре <b>ch_struc_size</b>.</p>
<pre>struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags
{ ;ñòðóêòóðà ïàðàìåòðîâ äëÿ ÷åê áîêñà
.left_s: dd left_s ;+0 ïîëîæåíèå ïî õ dw + ðàçìåð dw
@ -68,19 +69,22 @@
.size_of_str: dd 0x0 ;äëèííà ñòðîêè, âû÷èñëÿåòñÿ ïðè èíèöèàëèçàöèè êîìïîíåíòà
}
</pre>
<p><b>left_s</b> - отступ слева + длинна в формате (положение по x * 65536 +длинна по х).</p>
<p><b>top</b> - отступ сверху + длинна по y (положение по y* 65536 +длинна по y).</p>
<p><b>left_s</b> - отступ слева + ширина (в формате: положение по x * 65536 + длинна по х).</p>
<p><b>top_s</b> - отступ сверху + высота (в формате: положение по y * 65536 + длинна по y).</p>
<p><b>ch_text_margin</b> - ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè.</p>
<p><b>color</b> - öâåò âíóòðè ÷åêáîêñà.</p>
<h1><a name="checkbox_styles">Ñòèëè ýëåìåíòà</a></h1>
<pre>
ch_flag_en = 10b ;флаг установленного чек бокса.
ch_flag_top = 0x0 ;флаг расположения текста вверху т.е. 3-й бит
ch_flag_middle = 100b ;флаг расположения текста в центре т.е. 4-й бит.
ch_flag_bottom = 1000b ;флаг расположения текста в низу т.е. по умолчанию принимается значение внизу т.е. отсуствие 3-го и 4-го бита
</pre>
<h2>ch_flag_en = 10b</h2>
<p>Флаг установленного чек бокса.</p>
<h2>ch_flag_top = 0x0</h2>
<p>Флаг расположения текста вверху т.е. 3-й бит.</p>
<h2>ch_flag_middle = 100b</h2>
<p>Флаг расположения текста в центре т.е. 4-й бит.</p>
<h2>ch_flag_bottom = 1000b</h2>
<p>Флаг расположения текста в низу т.е. по умолчанию принимается значение внизу т.е. отсуствие 3-го и 4-го бита</p>
<h1><a name="version1">Checkbox version 1</a></h1>
@ -122,6 +126,6 @@ ch_flag_bottom = 1000b ;
<p>Ôëàæîê âûáðàí.</p>
<hr>
<p>Документация обновлялась последний раз 10.01.10.</p>
<p>Документация обновлялась последний раз 08.12.10.</p>
</body>
</html>

View File

@ -1,6 +1,6 @@
; макрос для системной библиотеки box_lib.obj
; элемент TreeList для Kolibri OS
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 09.06.2010 IgorA
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 01.12.2010 IgorA
; на код применена GPL2 лицензия
@ -918,87 +918,87 @@ tl_get_display_cur_pos: ;
; esi = coord of bottom border
align 4
tl_draw_node: ;рисует узел с: картинкой, подписью, иконкой открытия/закрытия и линиями к родит. узлу
push eax ebx ecx edx esi
push eax ebx ecx edx esi
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,-
bt tl_style,2 ;tl_list_box_mode
jc @f
inc ebx ;+1 - ìåñòî ïîä çíàê +,-
@@:
add bl,byte[edx+2];get level
imul bx,tl_img_cx
add ebx,tl_box_left
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð
bt tl_style,2 ;tl_list_box_mode
jc @f
inc ebx ;+1 - ìåñòî ïîä çíàê +,-
add bl,byte[edx+2] ;äîáàâëÿåì óðîâåíü ýëåìåíòà äëÿ åãî ó÷åòà â ëåâîì îòñòóïå èêîíêè
@@:
imul bx,tl_img_cx
add ebx,tl_box_left
shl ebx,16
mov bx,tl_img_cx
xor ecx,ecx
mov cx,tl_img_cy
imul ecx,eax
add ecx,tl_box_top
add cx,tl_capt_cy
shl ebx,16
mov bx,tl_img_cx
xor ecx,ecx
mov cx,tl_img_cy
imul ecx,eax
add ecx,tl_box_top
add cx,tl_capt_cy
;crop image if on the border
cmp esi,ecx ;åñëè óçåë âíèçó è åãî âîîáùå íå âèäíî
jl .end_draw
;crop image if on the border
cmp esi,ecx ;åñëè óçåë âíèçó è åãî âîîáùå íå âèäíî
jl .end_draw
sub esi,ecx
shl ecx,16
mov cx,tl_img_cy
cmp si,tl_img_cy
jge @f
mov cx,si ;åñëè óçåë âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó)
jmp .crop ;ïðîïóñêàåì ðèñîâàíèå íàäïèñè, êîòîðàÿ ñêîðåå âñåãî òîæå âûëåçåò çà íèæíþþ ãðàíèöó
@@:
call tl_draw_node_caption
.crop:
mov esi,ecx ;save ecx
sub esi,ecx
shl ecx,16
mov cx,tl_img_cy
cmp si,tl_img_cy
jge @f
mov cx,si ;åñëè óçåë âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó)
jmp .crop ;ïðîïóñêàåì ðèñîâàíèå íàäïèñè, êîòîðàÿ ñêîðåå âñåãî òîæå âûëåçåò çà íèæíþþ ãðàíèöó
@@:
call tl_draw_node_caption
.crop:
mov esi,ecx ;save ecx
cmp tl_data_img,0
jne .draw_img_n
push edx
mov edx,tl_col_txt
mov eax,13
int 0x40 ;draw node rect
pop edx
jmp @f
.draw_img_n:
push ebx edx esi
xor esi,esi
mov si,word[edx] ;get icon type
mov edx,ebx
ror ecx,16
mov dx,cx
mov cx,bx
ror ecx,16
mov ebx,3 ;rgb = 3 bytes
imul bx,tl_img_cx
imul bx,tl_img_cy
imul ebx,esi ;esi = icon index
add ebx,tl_data_img
cmp tl_data_img,0
jne .draw_img_n
push edx
mov edx,tl_col_txt
mov eax,13
int 0x40 ;draw node rect
pop edx
jmp @f
.draw_img_n:
push ebx edx esi
xor esi,esi
mov si,word[edx] ;get icon type
mov edx,ebx
ror ecx,16
mov dx,cx
mov cx,bx
ror ecx,16
mov ebx,3 ;rgb = 3 bytes
imul bx,tl_img_cx
imul bx,tl_img_cy
imul ebx,esi ;esi = icon index
add ebx,tl_data_img
mov eax,7
int 0x40 ;draw node icon '-'
pop esi edx ebx
@@:
mov eax,7
int 0x40 ;draw node icon '-'
pop esi edx ebx
@@:
mov al,byte[edx+2] ;draw minus '-'
mov ecx,tl_data_nodes
add ecx,sizeof.TreeList
mov al,byte[edx+2] ;draw minus '-'
mov ecx,tl_data_nodes
add ecx,sizeof.TreeList
mov ah,10 ;get icon index '+' or '-' ?
cmp byte[edx+3],1
jne .close
dec ah
.close:
mov ah,10 ;get icon index '+' or '-' ?
cmp byte[edx+3],1
jne .close
dec ah
.close:
call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà
bt tl_style,1
jae .end_draw
call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó
call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó
.end_draw:
pop esi edx ecx ebx eax
ret
call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà
bt tl_style,1
jae .end_draw
call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó
call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó
.end_draw:
pop esi edx ecx ebx eax
ret
;input:
; ecx = pointer to 1 node struct