forked from KolibriOS/kolibrios
8020de982d
git-svn-id: svn://kolibrios.org@1711 a494cfbc-eb01-0410-851d-a64ba20cac60
491 lines
9.4 KiB
PHP
491 lines
9.4 KiB
PHP
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
|
||
but_obj_move_up:
|
||
stdcall [tl_node_move_up], tree2
|
||
ret
|
||
|
||
;®¯ã᪠¥¬ ®¡ê¥ªâ ¢¨§ ¯® ᯨáªã
|
||
align 4
|
||
but_obj_move_down:
|
||
stdcall [tl_node_move_down], tree2
|
||
ret
|
||
|
||
;ª®¯¨à㥬 ®¡ê¥ªâ
|
||
align 4
|
||
but_obj_copy:
|
||
push ecx esi edi
|
||
stdcall [tl_node_get_data], tree2
|
||
pop esi
|
||
mov edi,[tree2.data_info] ;¤ ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ¨ï
|
||
xor ecx,ecx
|
||
mov cx,word[tree2.info_size]
|
||
cld
|
||
rep movsb
|
||
pop edi esi ecx
|
||
ret
|
||
|
||
;¢áâ ¢«ï¥¬ ®¡ê¥ªâ
|
||
align 4
|
||
but_obj_paste:
|
||
push eax ebx ecx edi
|
||
mov eax,[tree2.data_info] ;¤ ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ¨ï
|
||
mov bl,byte[eax]
|
||
call find_obj_in_opt
|
||
xor ecx,ecx
|
||
mov cx,word[edi+obj_opt.img-obj_opt] ;cx - ¨¤¥ªá £« ¢®© ¨ª®ª¨ ¤®¡ ¢«ï¥¬®£® ®¡ê¥ªâ
|
||
shl ecx,16
|
||
stdcall [tl_node_add], eax, ecx, tree2 ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâ
|
||
stdcall [tl_draw], tree2
|
||
pop edi ecx ebx eax
|
||
ret
|
||
|
||
;®¡®¢«¥¨¥ ®¡ê¥ªâ®¢ ¢ tree2, ¯® § ç¥¨ï¬ â¥ªá⮢ëå ¯®«¥©
|
||
;äãªæ¨ï ®¡à â ï ª ¤ ®© on_file_object_select
|
||
align 4
|
||
but_element_change:
|
||
;foc_obj - 㪠§ â¥«ì ¯®á«¥¤¨© ¢ë¡à ë© ã§¥« ¢ tree2
|
||
cmp dword[foc_obj],0
|
||
je @f
|
||
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
|
||
popad
|
||
@@:
|
||
call draw_constructor ;®¡®¢«ï¥¬ ®ª® ª®áâàãªâ®à
|
||
call draw_window
|
||
ret
|
||
|
||
;input:
|
||
; ebx - property column
|
||
; edi - pointer to property editbox
|
||
align 4
|
||
get_obj_win_param:
|
||
pushad
|
||
mov esi,ed_text
|
||
stdcall get_obj_text_col, [foc_obj], ebx ;edx - ᬥ饨¥ ¤«ï ⥪áâ
|
||
stdcall get_obj_text_len_col, [foc_obj], ebx ;eax - ¤«¨ ¯®«ï
|
||
cld
|
||
mov edi,edx
|
||
mov ecx,eax
|
||
rep movsb
|
||
popad
|
||
ret
|
||
|
||
;input:
|
||
; obj - pointer to object
|
||
; ind - column index
|
||
;output:
|
||
; edx + offset
|
||
; edx = 0 if not text
|
||
align 4
|
||
proc get_obj_text_col, obj:dword, ind:dword
|
||
mov edx,dword[obj]
|
||
inc edx ;goto text
|
||
push ebx
|
||
mov ebx,dword[ind]
|
||
cmp bx,0
|
||
je .end_fun
|
||
|
||
shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ®¬¥à ¨áª®¬®© ª®«®ª¨
|
||
mov bl,byte[edx-1] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ
|
||
|
||
push ecx edi
|
||
call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ
|
||
|
||
add edi,obj_opt.Col-obj_opt
|
||
dec bh
|
||
and ebx,0xff00
|
||
shr ebx,7 ;ᤢ¨£ ¥¬ 7, â.ª. 㦮 § 票¥ bh 㬮¦¥®¥ 2
|
||
add edi,ebx ;+ ¡ë¢è¥¥ bh*2
|
||
xor ecx,ecx
|
||
mov cx,word[edi] ;ecx - ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï
|
||
add edx,ecx
|
||
|
||
cmp cx,0
|
||
jg @f
|
||
mov edx,0 ;not text
|
||
@@:
|
||
cmp cx,MAX_LEN_OBJ_TXT
|
||
jl @f
|
||
mov edx,0 ;not text
|
||
@@:
|
||
|
||
pop edi ecx
|
||
.end_fun:
|
||
pop ebx
|
||
ret
|
||
endp
|
||
|
||
;input:
|
||
; obj - 㪠§ â¥«ì ®¡ê¥ªâ
|
||
; ind - ®¬¥à ¯®«ï ¢ãâਠ®¡ê¥ªâ
|
||
;output:
|
||
; eax - ¤«¨ ⥪á⮢®£® ¯®«ï ¢ãâਠ®¡ê¥ªâ
|
||
align 4
|
||
proc get_obj_text_len_col, obj:dword, ind:dword
|
||
xor eax,eax
|
||
push ebx
|
||
mov ebx,dword[ind]
|
||
shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ®¬¥à ¨áª®¬®© ª®«®ª¨
|
||
mov eax,dword[obj]
|
||
mov bl,byte[eax] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ
|
||
xor eax,eax
|
||
|
||
push edi
|
||
call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ
|
||
|
||
add edi,obj_opt.Col-obj_opt
|
||
and ebx,0xff00
|
||
shr ebx,7 ;ᤢ¨£ ¥¬ 7, â.ª. 㦮 § 票¥ bh 㬮¦¥®¥ 2
|
||
add edi,ebx ;+ ¡ë¢è¥¥ bh*2
|
||
|
||
mov ax,word[edi] ;eax - ᤨ£ ¤«ï á«¥¤ã饣® ¯®«ï
|
||
cmp ax,0
|
||
jg @f
|
||
mov eax,MAX_LEN_OBJ_TXT ;¯®á«¥¤¨¥ ¯®«ï ¤«ï 㤮¡á⢠ª®¤¨àãîâáï 0, ¥ MAX_LEN_OBJ_TXT, ¨á¯à ¢«ï¥¬ á¨âã æ¨î
|
||
@@:
|
||
cmp dword[ind],0
|
||
je .end_fun ;¤«ï ¯¥à¢®£® ¯®«ï ᤨ£ = 0, ¯®â®¬ã ¢ áâàãªâãॠ® ¥ åà ¨âáï, â.ª. ¨§¢¥á⥠§ à ¥¥
|
||
sub ax,word[edi-2] ;®â¨¬ ¥¬ ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï, ¯®«ãç ¥¬ ¤«¨ã ¯®«ï
|
||
|
||
cmp word[edi-2],0
|
||
jg @f
|
||
mov eax,0 ;¯®«¥ ¯ãá⮥, ¥ ¨á¯®«ì§ã¥âáï
|
||
@@:
|
||
cmp ax,MAX_LEN_OBJ_TXT
|
||
jl @f
|
||
mov eax,0 ;not text
|
||
@@:
|
||
|
||
pop edi
|
||
.end_fun:
|
||
pop ebx
|
||
ret
|
||
endp
|
||
|
||
align 4
|
||
proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
|
||
pushad
|
||
xor ebx,ebx
|
||
mov bl,byte[o_type]
|
||
call find_obj_in_opt
|
||
|
||
add edi,obj_opt.img-obj_opt ;get index (+0)
|
||
mov ebx,[n_col]
|
||
shl ebx,1
|
||
add edi,ebx ;move index (+bh)
|
||
xor ecx,ecx
|
||
mov cx,[edi]
|
||
|
||
cmp cx,0
|
||
jge @f
|
||
jmp .end_fun ;error icon index
|
||
@@:
|
||
|
||
mov ebx,bmp_icon
|
||
imul ecx,0x300
|
||
add ebx,ecx
|
||
|
||
mov eax,7
|
||
mov ecx,0x100010 ;ecx - size:16*16
|
||
mov edx,[wndObjI.left]
|
||
add edx,3 ;®âáâ㯠®â «¥¢®£® ªà ï à ¬ª¨ ¤® ¨ª®ª¨
|
||
shl edx,16
|
||
add edx,[coord_y]
|
||
int 0x40
|
||
.end_fun:
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
align 4
|
||
proc draw_icon, ind:dword,coord_x:dword,coord_y:dword
|
||
pushad
|
||
mov ecx,[ind]
|
||
cmp ecx,0
|
||
jl .end_fun
|
||
mov ebx,bmp_icon
|
||
imul ecx,0x300
|
||
add ebx,ecx
|
||
|
||
mov eax,7
|
||
mov ecx,0x100010 ;ecx - size:16*16
|
||
mov edx,[coord_x]
|
||
shl edx,16
|
||
add edx,[coord_y]
|
||
int 0x40
|
||
.end_fun:
|
||
popad
|
||
ret
|
||
endp
|
||
|
||
;input
|
||
; bl = cod object
|
||
;output:
|
||
; edi = pointer to option struct
|
||
align 4
|
||
find_obj_in_opt:
|
||
push ecx
|
||
xor ecx,ecx ;find 'bl' in options
|
||
mov edi,obj_opt
|
||
@@:
|
||
cmp bl,[edi] ;find
|
||
je @f
|
||
inc ecx
|
||
cmp ecx,MAX_OBJ_TYPES
|
||
je @f ;not find
|
||
add edi,sizeof.ObjOpt
|
||
jmp @b
|
||
@@:
|
||
pop ecx
|
||
ret
|
||
|
||
|
||
obj_find_last dd 0 ;㪠§ â¥«ì ¯®á«¥¤¨© ã¤ ç® ©¤¥ë© ®¡ê¥ªâ,
|
||
;㦥 ¤«ï ãáª®à¥¨ï ¯®á«¥¤ã饣® ¯®¨áª
|
||
|
||
;¢ë室:
|
||
;eax - 㪠§ ⥫ì áâàãªâãàã ©¤¥®£® ®¡ê¥ªâ
|
||
align 4
|
||
proc find_obj_in_file, o_type:dword
|
||
push ebx esi
|
||
mov ebx,[o_type]
|
||
stdcall dword[tl_node_poi_get_info], 0,tree2
|
||
pop esi
|
||
|
||
@@:
|
||
cmp esi,0
|
||
je .find_no
|
||
|
||
stdcall dword[tl_node_poi_get_data], esi,tree2
|
||
pop eax ;¯®«ãç ¥¬ ¤ ë¥ ã§«
|
||
cmp eax,0
|
||
je .find_no
|
||
|
||
cmp byte[eax],bl ;ᬮâਬ ®¯¨á «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
|
||
je .find_yes
|
||
|
||
stdcall dword[tl_node_poi_get_next_info], esi,tree2
|
||
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
|
||
|
||
jmp @b
|
||
|
||
.find_yes:
|
||
mov dword[obj_find_last],esi
|
||
jmp @f
|
||
.find_no:
|
||
mov dword[obj_find_last],0
|
||
xor eax,eax
|
||
@@:
|
||
pop esi ebx
|
||
ret
|
||
endp
|
||
|
||
;¢ë室:
|
||
;eax - 㪠§ ⥫ì áâàãªâãàã ©¤¥®£® ®¡ê¥ªâ
|
||
align 4
|
||
proc find_obj_in_file_next, o_type:dword
|
||
push ebx esi
|
||
cmp dword[obj_find_last],0
|
||
je .find_no
|
||
|
||
mov ebx,[o_type]
|
||
|
||
stdcall dword[tl_node_poi_get_next_info], dword[obj_find_last],tree2
|
||
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
|
||
|
||
@@:
|
||
cmp esi,0
|
||
je .find_no
|
||
|
||
stdcall dword[tl_node_poi_get_data], esi,tree2
|
||
pop eax ;¯®«ãç ¥¬ ¤ ë¥ ã§«
|
||
cmp eax,0
|
||
je .find_no
|
||
|
||
cmp byte[eax],bl ;ᬮâਬ ®¯¨á «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
|
||
je .find_yes
|
||
|
||
stdcall dword[tl_node_poi_get_next_info], esi, tree2
|
||
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
|
||
|
||
jmp @b
|
||
|
||
.find_yes:
|
||
mov dword[obj_find_last],esi
|
||
jmp @f
|
||
.find_no:
|
||
mov dword[obj_find_last],0
|
||
xor eax,eax
|
||
@@:
|
||
pop esi ebx
|
||
ret
|
||
endp
|
||
|
||
align 4
|
||
but_show_constructor:
|
||
mov byte[show_mode],0
|
||
stdcall [buf2d_draw], buf_fon
|
||
ret
|
||
|
||
align 4
|
||
but_show_code:
|
||
mov byte[show_mode],1
|
||
stdcall [ted_draw], tedit0
|
||
ret
|
||
|
||
;input:
|
||
; buf - 㪠§ ⥫ì áâபã, ç¨á«® ¤®«¦® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç®¬ ¢¨¤¥
|
||
;output:
|
||
; eax - ç¨á«®
|
||
align 4
|
||
proc conv_str_to_int, buf:dword
|
||
xor eax,eax
|
||
push ebx esi
|
||
xor ebx,ebx
|
||
mov esi,[buf]
|
||
cmp word[esi],'0x'
|
||
je .load_digit_16
|
||
|
||
.load_digit_10: ;áç¨âë¢ ¨¥ 10-â¨çëå æ¨äà
|
||
mov bl,byte[esi]
|
||
cmp bl,'0'
|
||
jl @f
|
||
cmp bl,'9'
|
||
jg @f
|
||
sub bl,'0'
|
||
imul eax,10
|
||
add eax,ebx
|
||
inc esi
|
||
jmp .load_digit_10
|
||
jmp @f
|
||
|
||
.load_digit_16: ;áç¨âë¢ ¨¥ 16-à¨çëå æ¨äà
|
||
add esi,2
|
||
.cycle_16:
|
||
mov bl,byte[esi]
|
||
cmp bl,'0'
|
||
jl @f
|
||
cmp bl,'f'
|
||
jg @f
|
||
cmp bl,'9'
|
||
jle .us1
|
||
cmp bl,'A'
|
||
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
|
||
.us1: ;á®áâ ¢®¥ ãá«®¢¨¥
|
||
cmp bl,'F'
|
||
jle .us2
|
||
cmp bl,'a'
|
||
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
|
||
sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥à娩 ॣ¨áâà, ¤«ï ã¯à®é¥¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
|
||
.us2: ;á®áâ ¢®¥ ãá«®¢¨¥
|
||
sub bl,'0'
|
||
cmp bl,9
|
||
jle .cor1
|
||
sub bl,7 ;convert 'A' to '10'
|
||
.cor1:
|
||
shl eax,4
|
||
add eax,ebx
|
||
inc esi
|
||
jmp .cycle_16
|
||
@@:
|
||
|
||
pop esi ebx
|
||
ret
|
||
endp
|