3eda462807
Programs: fasm updated to 1.67.14, small fixes in desktop, stackcfg, calc, board, pipes, freecell, big cleanup of unused programs, added some applications from 0.6.3.0 distr... git-svn-id: svn://kolibrios.org@205 a494cfbc-eb01-0410-851d-a64ba20cac60
755 lines
18 KiB
PHP
755 lines
18 KiB
PHP
; <Lrz> 21.07.2006 ¤®¡ ¢«¥ äãªæ¨ï ª®¯ª¨ Del, ⥯¥àì ¬®¦® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ®© ª®« ¢¨è¨
|
||
; €¢â®à: …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru
|
||
; „ â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.07.06 10:40
|
||
; <EFBFBD> ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box,
|
||
; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë.
|
||
; <EFBFBD>à®æ¥¤ãàë:
|
||
; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ;
|
||
; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë;
|
||
; edit_box.mouse - ®¡à ¡®âª ¬ëè¨;
|
||
; edit_box.focus - ãáâ ®¢ª 䮪ãá ;
|
||
; edit_box.blur - ¥£® à §¬ë¢ ¨¥;
|
||
; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢.
|
||
; <EFBFBD>ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â
|
||
; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã.
|
||
; <EFBFBD>ਬ¥à áâàãªâãàë:
|
||
; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
|
||
; ¤«¨ , «¥¢®, ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à ,
|
||
; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢,
|
||
; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. <EFBFBD>ãä¥à ¤®«¦¥
|
||
; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255:
|
||
; some_edit_text:
|
||
; rb 256 ;255+1
|
||
|
||
; <EFBFBD>ਬ¥à ¢ë§®¢ ¯à®æ¥¤ãàë:
|
||
; mov edi,some_edit
|
||
; call edit_box.draw
|
||
|
||
; <EFBFBD>ਠ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥
|
||
; 室¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ¤® ¢ë§¢ âì
|
||
; 2-ãî á¨á¥¬ãî äãªæ¨î, ¯à¨¬¥à:
|
||
; mov eax,2
|
||
; int 0x40
|
||
; mov edi,some_edit1
|
||
; call edit_box.key
|
||
; mov edi,some_edit2
|
||
; call edit_box.key
|
||
; <EFBFBD>¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪 ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª®
|
||
; ªâ¨¢ë¬.
|
||
; …᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box
|
||
; 䮪ãá â¥àï¥âáï.
|
||
macro use_edit_box
|
||
{
|
||
edit_box:
|
||
ed_width equ [edi]
|
||
ed_left equ [edi+2]
|
||
ed_top equ [edi+4]
|
||
ed_color equ [edi+6]
|
||
ed_focus_border_color equ [edi+10]
|
||
ed_blur_border_color equ [edi+14]
|
||
ed_text_color equ [edi+18]
|
||
ed_flags equ [edi+22]
|
||
ed_max equ [edi+24]
|
||
ed_size equ [edi+26]
|
||
ed_pos equ [edi+28]
|
||
ed_offset equ [edi+30]
|
||
ed_text equ [edi+32]
|
||
ed_height=14 ; ¢ëá®â
|
||
;==========================================================
|
||
;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ =================================
|
||
;==========================================================
|
||
.draw:
|
||
pusha
|
||
;--- à¨á㥬 à ¬ªã ---
|
||
call .draw_border
|
||
|
||
.draw_bg_cursor_text:
|
||
;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® ---
|
||
call .check_offset
|
||
;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì ---
|
||
call .draw_bg
|
||
.draw_cursor_text:
|
||
;--- à¨á㥬 ªãàá®à ---
|
||
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ----
|
||
bt word ed_flags,1
|
||
jnc @f
|
||
call .draw_cursor
|
||
@@:
|
||
call .draw_text
|
||
popa
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ --------------------------
|
||
;----------------------------------------------------------
|
||
.draw_text:
|
||
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
|
||
call .get_n
|
||
;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì ---
|
||
movsx esi,word ed_size
|
||
sub si,ed_offset
|
||
cmp ax,si
|
||
ja @f
|
||
mov si,ax
|
||
@@:
|
||
|
||
;--- à¨á㥬 ⥪áâ ---
|
||
mov eax,4
|
||
mov bx,ed_left
|
||
add bx,2
|
||
shl ebx,16
|
||
mov bx,ed_top
|
||
add bx,4
|
||
mov ecx,ed_text_color
|
||
movsx edx,word ed_offset
|
||
add edx,ed_text
|
||
int 0x40
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ----------------------------
|
||
;----------------------------------------------------------
|
||
.draw_bg_eax:
|
||
pusha
|
||
movsx ebx,ax
|
||
lea ebx,[ebx*2+ebx]
|
||
shl bx,1
|
||
shl ebx,16
|
||
shr eax,16
|
||
lea eax,[eax*2+eax]
|
||
shl ax,1
|
||
add ax,ed_left
|
||
add ax,2
|
||
mov bx,ax
|
||
ror ebx,16
|
||
jmp @f
|
||
.draw_bg:
|
||
pusha
|
||
mov bx,ed_left
|
||
inc bx
|
||
shl ebx,16
|
||
mov bx,ed_width
|
||
dec bx
|
||
|
||
@@:
|
||
mov cx,ed_top
|
||
inc cx
|
||
shl ecx,16
|
||
mov cx,ed_height
|
||
dec cx
|
||
|
||
mov edx,ed_color
|
||
mov eax,13
|
||
int 0x40
|
||
popa
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ --------------
|
||
;----------------------------------------------------------
|
||
.get_n:
|
||
xor edx,edx
|
||
movsx eax,word ed_width
|
||
sub ax,4
|
||
mov bx,6
|
||
div bx
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à --------------------------
|
||
;----------------------------------------------------------
|
||
.clear_cursor:
|
||
mov edx,ed_color
|
||
jmp @f
|
||
.draw_cursor:
|
||
mov edx,ed_text_color
|
||
@@:
|
||
movsx ebx,word ed_pos
|
||
sub bx,ed_offset
|
||
;lea ebx,[ebx*2+ebx]
|
||
;shl ebx,1
|
||
imul ebx,6
|
||
add bx,ed_left
|
||
inc bx
|
||
push bx
|
||
shl ebx,16
|
||
pop bx
|
||
mov cx,ed_top
|
||
add cx,2
|
||
push cx
|
||
shl ecx,16
|
||
pop cx
|
||
add cx,ed_height-4
|
||
mov eax,38
|
||
int 0x40
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ----------------------------
|
||
;----------------------------------------------------------
|
||
.draw_border:
|
||
;--- 梥â à ¬ª¨ ---
|
||
bt word ed_flags,1
|
||
mov edx,ed_focus_border_color
|
||
jc @f
|
||
mov edx,ed_blur_border_color
|
||
@@:
|
||
;--- ᢥàåã ---
|
||
mov bx,ed_left
|
||
push bx
|
||
shl ebx,16
|
||
pop bx
|
||
add bx,ed_width
|
||
mov cx,ed_top
|
||
push cx
|
||
shl ecx,16
|
||
pop cx
|
||
mov eax,38
|
||
int 0x40
|
||
|
||
;--- ᨧã ---
|
||
push cx
|
||
add cx,ed_height
|
||
push cx
|
||
shl ecx,16
|
||
pop cx
|
||
int 0x40
|
||
|
||
;--- á«¥¢ ---
|
||
pop cx
|
||
push bx
|
||
sub bx,ed_width
|
||
int 0x40
|
||
|
||
;--- á¯à ¢ ---
|
||
pop bx
|
||
push bx
|
||
shl ebx,16
|
||
pop bx
|
||
int 0x40
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, ---
|
||
;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------
|
||
;--- eax = 1, ¥á«¨ ¥ ¨§¬¥¨«®áì ¨«¨ eax = 0, ¥á«¨
|
||
; ¨§¬¥¨«®áì
|
||
;----------------------------------------------------------
|
||
.check_offset:
|
||
push word ed_offset
|
||
call .get_n
|
||
;--- ¯à ¢¥¥ ---
|
||
mov bx,ed_offset
|
||
add bx,ax
|
||
cmp bx,ed_pos
|
||
ja @f
|
||
mov bx,ed_pos
|
||
mov cx,ax
|
||
shr cx,2
|
||
sub bx,cx
|
||
mov cx,ax
|
||
shr cx,1
|
||
sub bx,cx
|
||
mov ed_offset,bx
|
||
@@:
|
||
;--- «¥¢¥¥ ---
|
||
mov bx,ed_offset
|
||
cmp bx,ed_pos
|
||
jb @f
|
||
mov bx,ed_pos
|
||
mov cx,ax
|
||
shr cx,2
|
||
sub bx,cx
|
||
jnc $+5
|
||
xor bx,bx
|
||
mov ed_offset,bx
|
||
@@:
|
||
xor eax,eax
|
||
pop bx
|
||
cmp bx,ed_offset
|
||
jne @f
|
||
inc eax
|
||
@@:
|
||
ret
|
||
|
||
;==========================================================
|
||
;=== ®¡à ¡®âª ª« ¢¨ âãàë =================================
|
||
;==========================================================
|
||
.key:
|
||
pusha
|
||
bt word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||
jc @f
|
||
popa
|
||
ret
|
||
@@:
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥à塞, çâ® ¦ â® --------------------------------
|
||
;----------------------------------------------------------
|
||
cmp ah,8
|
||
je .backspace
|
||
cmp ah,0xb6
|
||
je .delete
|
||
cmp ah,176
|
||
je .left
|
||
cmp ah,179
|
||
je .right
|
||
cmp ah,180
|
||
je .home
|
||
cmp ah,181
|
||
je .end
|
||
|
||
;--- ¦ â ¤àã£ ï ª« ¢¨è ---
|
||
bt word ed_flags,15 ; ⮫쪮 æ¨äàë ?
|
||
jnc @f
|
||
cmp ah,'0'
|
||
jb .no_figure
|
||
cmp ah,'9'
|
||
ja .no_figure
|
||
jmp @f
|
||
.no_figure:
|
||
popa
|
||
ret
|
||
@@:
|
||
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥
|
||
mov bx,ed_max
|
||
cmp bx,ed_pos
|
||
jne @f ; ¥á«¨ ¤ , ¢ ª®¥æ ¯à®æ¥¤ãàë
|
||
popa
|
||
ret
|
||
@@:
|
||
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢®
|
||
mov edx,ed_text
|
||
dec edx
|
||
xor ecx,ecx
|
||
mov cx,ed_size
|
||
cmp cx,ed_pos
|
||
je @f
|
||
.mov_right_next:
|
||
mov bh,[edx+ecx]
|
||
mov [edx+ecx+1],bh
|
||
dec cx
|
||
cmp cx,ed_pos
|
||
jne .mov_right_next
|
||
@@:
|
||
|
||
|
||
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
|
||
mov edx,ed_text
|
||
movsx ebx,word ed_pos
|
||
mov [ebx+edx],ah
|
||
|
||
call .clear_cursor
|
||
; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨
|
||
inc word ed_pos
|
||
mov bx,ed_size
|
||
cmp bx,ed_max
|
||
je .draw_bg_cursor_text;.key_end_draw
|
||
inc word ed_size
|
||
|
||
;push word ed_offset
|
||
call .check_offset
|
||
;pop ax
|
||
;cmp ax,ed_offset
|
||
;jne .draw_bg_cursor_text
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
|
||
call .get_n
|
||
sub ax,ed_pos
|
||
add ax,ed_offset
|
||
inc ax
|
||
shl eax,16
|
||
mov ax,ed_pos
|
||
sub ax,ed_offset
|
||
dec ax
|
||
ror eax,16
|
||
call .draw_bg_eax
|
||
|
||
jmp .draw_cursor_text
|
||
|
||
;jmp .draw_cursor_text;.key_end_draw
|
||
|
||
.delete:
|
||
mov dx,ed_size
|
||
mov cx,ed_pos
|
||
;inc edx
|
||
;add ecx,900
|
||
;sub ecx,1
|
||
cmp dx,cx
|
||
jg @f
|
||
popa
|
||
ret
|
||
|
||
@@:
|
||
mov edx,ed_text
|
||
;dec edx
|
||
.mov_stop_next:
|
||
mov bh,[edx+ecx+1]
|
||
mov [edx+ecx],bh
|
||
inc cx
|
||
mov bx,ed_size
|
||
;dec bx
|
||
;dec bx
|
||
cmp cx,bx
|
||
jne .mov_stop_next
|
||
|
||
; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à
|
||
;dec word ed_pos
|
||
dec word ed_size
|
||
;push word ed_offset
|
||
call .check_offset
|
||
;pop ax
|
||
;cmp ax,ed_offset
|
||
;jne .draw_bg_cursor_text
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
|
||
call .get_n
|
||
sub ax,ed_pos
|
||
add ax,ed_offset
|
||
shl eax,16
|
||
mov ax,ed_pos
|
||
sub ax,ed_offset
|
||
ror eax,16
|
||
call .draw_bg_eax
|
||
|
||
jmp .draw_cursor_text
|
||
popa
|
||
ret
|
||
|
||
;--- ¦ â ª« ¢¨è backspace ---
|
||
.backspace:
|
||
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
|
||
mov bx,ed_pos
|
||
;cmp bx,0
|
||
;jne @f; .key_end ; ¥á«¨ ¤ , ¢ ª®¥æ
|
||
test bx,bx
|
||
jnz @f
|
||
popa
|
||
ret
|
||
@@:
|
||
|
||
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢«¥¢®
|
||
mov edx,ed_text
|
||
dec edx
|
||
movsx ecx,word ed_pos
|
||
|
||
.mov_left_next:
|
||
mov bh,[edx+ecx+1]
|
||
mov [edx+ecx],bh
|
||
inc cx
|
||
mov bx,ed_size
|
||
inc bx
|
||
cmp cx,bx
|
||
jne .mov_left_next
|
||
|
||
; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à
|
||
dec word ed_pos
|
||
dec word ed_size
|
||
|
||
;push word ed_offset
|
||
call .check_offset
|
||
;pop ax
|
||
;cmp ax,ed_offset
|
||
;jne .draw_bg_cursor_text
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
|
||
call .get_n
|
||
sub ax,ed_pos
|
||
add ax,ed_offset
|
||
shl eax,16
|
||
mov ax,ed_pos
|
||
sub ax,ed_offset
|
||
ror eax,16
|
||
call .draw_bg_eax
|
||
|
||
jmp .draw_cursor_text
|
||
popa
|
||
ret
|
||
|
||
;--- ¦ â ª« ¢¨è left ---
|
||
.left:
|
||
mov bx,ed_pos
|
||
;cmp bx,0
|
||
;je @f
|
||
test bx,bx
|
||
jz @f
|
||
call .clear_cursor
|
||
dec word ed_pos
|
||
call .check_offset
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
call .draw_cursor
|
||
@@:
|
||
popa
|
||
ret
|
||
|
||
;--- ¦ â ª« ¢¨è right ---
|
||
.right:
|
||
mov bx,ed_pos
|
||
cmp bx,ed_size
|
||
je @f
|
||
call .clear_cursor
|
||
inc word ed_pos
|
||
call .check_offset
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
call .draw_cursor
|
||
@@:
|
||
popa
|
||
ret
|
||
|
||
.home:
|
||
mov bx,ed_pos
|
||
test bx,bx
|
||
jz @f
|
||
call .clear_cursor
|
||
xor eax,eax
|
||
mov ed_pos,ax
|
||
call .check_offset
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
call .draw_cursor
|
||
@@:
|
||
popa
|
||
ret
|
||
|
||
.end:
|
||
mov bx,ed_pos
|
||
cmp bx,ed_size
|
||
je @f
|
||
call .clear_cursor
|
||
mov ax,ed_size
|
||
mov ed_pos,ax
|
||
call .check_offset
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
call .draw_cursor
|
||
@@:
|
||
popa
|
||
ret
|
||
|
||
|
||
;==========================================================
|
||
;=== ®¡à ¡®âª ¬ëè¨ =======================================
|
||
;==========================================================
|
||
.mouse:
|
||
pusha
|
||
;----------------------------------------------------------
|
||
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ -----------------------
|
||
;----------------------------------------------------------
|
||
mov eax,37
|
||
mov ebx,2
|
||
int 0x40
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ----------------------------------
|
||
;----------------------------------------------------------
|
||
bt eax,0
|
||
jc .mouse_left_button
|
||
|
||
bt eax,1
|
||
jc @f
|
||
btr word ed_flags,2
|
||
@@:
|
||
|
||
popa
|
||
ret
|
||
|
||
.mouse_left_button:
|
||
;----------------------------------------------------------
|
||
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ -----------------------------
|
||
;----------------------------------------------------------
|
||
bts word ed_flags,2
|
||
jc .mouse_pressed
|
||
mov eax,37
|
||
;mov ebx,1
|
||
xor ebx,ebx
|
||
inc ebx
|
||
int 0x40
|
||
;----------------------------------------------------------
|
||
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
|
||
;----------------------------------------------------------
|
||
mov bx,ed_top
|
||
cmp ax,bx
|
||
jl ._blur;.mouse_end_no_focus
|
||
|
||
add bx,ed_height
|
||
cmp ax,bx
|
||
jg ._blur;.mouse_end_no_focus
|
||
|
||
shr eax,16
|
||
|
||
mov bx,ed_left
|
||
cmp ax,bx
|
||
jl ._blur;.mouse_end_no_focus
|
||
|
||
add bx,ed_width
|
||
cmp ax,bx
|
||
jg ._blur;.mouse_end_no_focus
|
||
|
||
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à ---
|
||
push eax
|
||
call .clear_cursor
|
||
pop eax
|
||
xor dx,dx
|
||
sub ax,ed_left
|
||
add ax,2
|
||
mov bx,6
|
||
div bx
|
||
add ax,ed_offset
|
||
cmp ax,ed_size
|
||
jna @f
|
||
mov ax,ed_size
|
||
@@:
|
||
mov ed_pos,ax
|
||
call .check_offset
|
||
test eax,eax
|
||
jz .draw_bg_cursor_text
|
||
call .draw_cursor
|
||
|
||
call .focus
|
||
|
||
.mouse_pressed:
|
||
popa
|
||
ret
|
||
|
||
;.mouse_end_no_focus:
|
||
; call .blur
|
||
;popa
|
||
;ret
|
||
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá ---------------------------
|
||
;----------------------------------------------------------
|
||
.blur:
|
||
pusha
|
||
._blur:
|
||
bt word ed_flags,14
|
||
jc @f
|
||
btr word ed_flags,1
|
||
jnc @f
|
||
call .clear_cursor
|
||
jmp .blur_end
|
||
.focus:
|
||
pusha
|
||
bts word ed_flags,1
|
||
jc @f
|
||
call .draw_cursor
|
||
.blur_end:
|
||
call .draw_border
|
||
@@:
|
||
popa
|
||
ret
|
||
|
||
;----------------------------------------------------------
|
||
;--- ¯à®æ¥¤ãà à §¬ë¢ ¨ï 䮪ãá --------------------------
|
||
;----------------------------------------------------------
|
||
;.blur:
|
||
;pusha
|
||
;._blur:
|
||
;btr word ed_flags,1
|
||
;jnc @f
|
||
;call .draw_border
|
||
;call .clear_cursor
|
||
;@@:
|
||
;popa
|
||
;ret
|
||
}
|
||
ed_figure_only=1000000000000000b
|
||
ed_always_focus=100000000000000b
|
||
ed_focus=10b
|
||
ed_struc_size=36
|
||
macro draw_edit_boxes start,end
|
||
{
|
||
mov edi,start
|
||
mov ecx,((end-start)/ed_struc_size)
|
||
@@:
|
||
call edit_box.draw
|
||
add edi,ed_struc_size
|
||
loop @b
|
||
}
|
||
|
||
macro mouse_edit_boxes start,end
|
||
{
|
||
mov edi,start
|
||
mov ecx,((end-start)/ed_struc_size)
|
||
@@:
|
||
call edit_box.mouse
|
||
add edi,ed_struc_size
|
||
loop @b
|
||
}
|
||
|
||
macro key_edit_boxes start,end
|
||
{
|
||
mov edi,start
|
||
mov ecx,((end-start)/ed_struc_size)
|
||
@@:
|
||
call edit_box.key
|
||
add edi,ed_struc_size
|
||
loop @b
|
||
}
|
||
|
||
struc edit_box width,left,top,color,focus_border_color,\
|
||
blur_border_color,text_color,max,text,flags,size
|
||
{
|
||
.width dw width
|
||
.left dw left
|
||
.top dw top
|
||
.color dd color
|
||
.focus_border_color dd focus_border_color
|
||
.blur_border_color dd blur_border_color
|
||
.text_color dd text_color
|
||
.flags dw flags+0
|
||
.max dw max
|
||
.size dw size+0
|
||
.pos dw 0
|
||
.offset dw 0
|
||
.text dd text
|
||
}
|
||
|
||
macro edit_boxes_set_sys_color start,end,color_table
|
||
{
|
||
mov edi,start
|
||
mov ecx,((end-start)/ed_struc_size)
|
||
mov esi,color_table
|
||
@@:
|
||
mov eax,[esi+36]
|
||
mov ebx,[esi+20]
|
||
mov ed_focus_border_color,eax
|
||
shr bh,1
|
||
shr bl,1
|
||
shr ah,1
|
||
shr al,1
|
||
add ah,bh
|
||
add al,bl
|
||
ror eax,16
|
||
ror ebx,16
|
||
shr bl,1
|
||
shr al,1
|
||
add al,bl
|
||
ror eax,16
|
||
mov ed_blur_border_color,eax
|
||
add edi,ed_struc_size
|
||
loop @b
|
||
}
|
||
|
||
macro draw_edit_box ed_ptr
|
||
{
|
||
mov edi,ed_ptr
|
||
call edit_box.draw
|
||
}
|
||
|
||
macro mouse_edit_box ed_ptr
|
||
{
|
||
mov edi,ed_ptr
|
||
call edit_box.mouse
|
||
}
|
||
|
||
macro key_edit_box ed_ptr
|
||
{
|
||
mov edi,ed_ptr
|
||
call edit_box.key
|
||
} |