/programs/develop/examples/editbox/trunk/EDITBOX.INC |
---|
1,3 → 1,5 |
; <Lrz> 13.02.2007 ã¡à « ¯® ¢®§¬®¦®á⨠¬¥àæ ¨¥, ã«ãçè¥ ®¡à ¡®â ª ¯¥à¥à¨á®¢ª¨ ä® |
; ¤®¡ ¢¨« ä¨âçã ¢¥á¥¨ï 0å0 ¯® ¤à¥áã ed_size ¨ ç¥ ã Maxxx32 ¡ë«¨ ¥á®áâ몮¢ª¨ ¢ ª®¤¥. à¥ç¨ ¢ ⮬, çâ® ®¯â¨¬¨§ æ¨ï ¡ë« ᢥ¤¥ ª ⮬ã çâ® ï ¥ ç¨á⨫ ᨬ¢®«ë ¢ ¡ãä¥à¥, ª®£¤ 㤠«ï«, ï ¯à®áâ® ¨å ¥ ¢ë¢®¤¨«, ¨ ¯®â®¬ ª®£¤ ¢®á¨«áï ®¢ë© ᨬ¢®«, ® ¯® ¯à®áâã § â¨à « 㦥 ¨¬¥î騩áï. ᫨ ¡ë ¯à®£à ¬¬ ®¡à ¡ âë¢ « ª®¥æ áâப¨ ¯® ed_size, ¯à®¡«¥¬ ¡ë ¥ ¢®§¨ª«®. ® ᥩç á íâ®â ¥¤®áâ ⮪ ¨á¯à ¢«¥. |
; <Lrz> 01.02.2007 ¤®à ¡®âª edit_box, ¨á¯à ¢¨« ¡ £¨. |
; <Lrz> 26.01.2007 ®à¬ «ì ï à ¡®â ª®¬¯ ¥â ¨á¯à ¢¨« äãªæ¨î .check_offset |
; <Lrz> 24.01.2007 ¯®ä¨ªá¥« ¡ £¨ ¢ë§¢ ë¥ ¥ ¯à ¢¨«ìë¬ ª®¤®¬ )). |
153,6 → 155,7 |
ret |
jmp @f |
;¢å®¤ ⮫쪮 梥â edx |
.draw_bg: |
mov ebx,ed_left |
add ebx,1 |
347,30 → 350,6 |
mov dword [esp+28],0 |
popad |
ret |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; mov ebx,eax |
; mov eax,ed_pos |
; xor edx,edx |
; idiv ebx |
; xor edx,edx |
; imul eax,ebx |
; mov ed_offset,eax |
; pop ebx |
; cmp ax,bx |
; je @f |
;;;;;;;; ¤ ë¥ ¤«ï § ªà 訢 ¨ï ¢á¥© ¯®«®áë ¯àאַ㣮«ì¨ª |
; mov ebx,ed_left |
; inc ebx |
; shl ebx,16 |
; mov bx,ed_width |
; dec ebx |
; mov edx,ed_color |
; call .draw_bg_eax |
; mov dword [esp+28],0 |
;@@: popad |
; ret |
;========================================================== |
;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
;========================================================== |
379,6 → 358,7 |
test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
je .no_figure ;@f |
;஢¥àª ¦ âë shift |
xor ecx,ecx |
push eax |
inc ecx |
387,9 → 367,9 |
int 0x40 |
test al,0x03 |
je @f |
or word ed_flags,ed_shift |
or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ |
@@: pop eax |
@@: pop eax ;¢®ááâ ®¢¨¬ áç¨â ë© á¨¬¢®« á ª« ¢¨ âãàë |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, çâ® ¦ â® -------------------------------- |
;---------------------------------------------------------- |
433,6 → 413,9 |
mov edx,ed_size |
mov ecx,ed_pos |
call .del_char |
;clear |
mov ebp,ed_size |
call .clear_bg |
;;;; |
mov eax,ed_shift_pos |
mov ebx,ed_size |
443,9 → 426,11 |
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ |
@@: mov ecx,ed_size |
mov edx, ed_max |
test word ed_flags,ed_insert |
jne @f |
cmp ecx,edx |
jae .no_figure |
mov ebx, ed_pos |
@@: mov ebx, ed_pos |
cmp ebx,edx |
jl @f ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® |
.no_figure: |
463,6 → 448,12 |
sub esi,ecx |
add esi,ebx |
mov edi,esi |
;clear |
pusha |
mov edi,ebp |
mov ebp,ed_pos |
call .clear_bg |
popa |
jmp .In_k |
@@: ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢® |
mov ecx,ed_size |
478,7 → 469,14 |
test word [ebp+36],ed_insert ;IF insert is enable â.ª. edi ¨§¬¥¥ ¤à¥á㥬 ç¥à¥§ ebp |
jne .ins_v |
;clear |
pusha |
mov edi,ebp |
mov ebp,ed_size |
call .clear_bg |
popa |
sub ecx,ebx ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥¨ï. |
inc edi ;¬¥á⨬ è¨ á¨¬¢®«ë ¢ ¯à ¢® |
std |
542,8 → 540,13 |
mov ebx,ed_size |
sub ebx,eax |
mov ed_size,ebx |
jmp .draw_all2 |
call .clear_cursor |
call .check_offset |
call .draw_bg |
ret |
@@: dec dword ed_size |
.draw_all2: |
550,54 → 553,9 |
and word ed_flags,ed_shift_cl |
call .clear_cursor |
call .check_offset |
;;;;;;;;;;;;;;; |
test eax,eax |
jne @f |
call .draw_bg |
mov ebp,ed_size |
call .clear_bg |
ret |
;;;;;;;;;;;;;;; |
@@: call .get_n |
push eax |
mov ebx,ed_offset |
add eax,ebx ;eax = w_off= ed_offset+width |
mov ebx,ed_size |
cmp eax,ebx |
jb @f |
mov eax,ed_pos |
sub ebx,eax |
mov ecx,ed_offset |
sub eax,ecx |
jmp .nxt |
@@: mov ebx,ed_pos |
push ebx |
sub eax,ebx |
mov ebx,eax ;It is don't optimal |
pop eax ;ed_pos |
mov ecx,ed_offset |
sub eax,ecx |
.nxt: |
mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë |
add ebp,ebx |
pop edx |
cmp ebp,edx |
je @f |
inc ebx |
@@: mov edx,ebx |
lea ebx,[eax*2+eax] |
shl ebx,1 |
add ebx,ed_left |
inc ebx |
shl ebx,16 |
lea ecx,[edx*2+edx] |
shl ecx,1 |
mov bx,cx |
mov edx,ed_color |
call .draw_bg_eax |
ret |
; jmp .shift |
;--- ¦ â ª« ¢¨è left --- |
.left: call .sh_enable |
636,9 → 594,13 |
;jz .draw_bg_cursor_text |
call .draw_cursor |
.shift: ;;;;;;;SHIFT |
;test ed_flags,ed_ |
call .draw_bg ;¥ ®¯â¨¬ «ì® |
;mov ebp,ed_size |
;call .clear_bg |
test word ed_flags,ed_shift |
je .f_exit |
;;;;;;SHIFT end |
702,10 → 664,12 |
mov edx,shift_color |
call .draw_bg_eax |
and word ed_flags,1111111111111011b |
call .enable_null |
jmp .draw_cursor_text |
;;;;;;;;;;;;;;;;;;;;; |
.f_exit: and word ed_flags,ed_shift_cl |
call .enable_null |
jmp .draw_cursor_text |
;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥? |
720,8 → 684,23 |
ret |
@@: and word ed_flags,ed_shift_cl |
.sh_ext_en: ret |
ret |
.sh_ext_en: mov ebp,ed_size |
call .clear_bg |
ret |
;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã ed_size+1 |
.enable_null: |
pusha |
mov eax,ed_size |
mov ebx,ed_text |
add eax,ebx |
inc eax |
xor ebx,ebx |
mov [eax],bl |
popa |
ret |
;- 㤠«¥¨¥ ᨬ¢®« |
;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
.del_char: |
771,6 → 750,54 |
pop edi |
ret |
;¢ëç¨á«¨âì § ªà 訢 ¥¬ãî ®¡« áâì |
;ᮣ« 襨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size |
.clear_bg: |
call .get_n ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨ë ª®¬¯®¥â |
push eax |
mov ebx,ed_offset |
add eax,ebx ;eax = w_off= ed_offset+width |
mov ebx,ebp ;ed_size |
cmp eax,ebx |
jb @f |
mov eax,ed_pos |
sub ebx,eax |
mov ecx,ed_offset |
sub eax,ecx |
jmp .nxt |
@@: mov ebx,ed_pos |
push ebx |
sub eax,ebx |
mov ebx,eax ;It is don't optimal |
pop eax ;ed_pos |
mov ecx,ed_offset |
sub eax,ecx |
.nxt: |
mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë |
add ebp,ebx |
pop edx |
cmp ebp,edx |
je @f |
inc ebx |
@@: mov edx,ebx |
lea ebx,[eax*2+eax] |
shl ebx,1 |
add ebx,ed_left |
inc ebx |
shl ebx,16 |
lea ecx,[edx*2+edx] |
shl ecx,1 |
mov bx,cx |
mov edx,ed_color |
call .draw_bg_eax |
ret |
;========================================================== |
;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
;========================================================== |
/programs/develop/examples/editbox/trunk/editbox.asm |
---|
67,20 → 67,14 |
xor eax,eax ;®¡ã«¨âì eax |
mov ebx,50*65536+390 ;[ª®®à¤¨ â ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x] |
mov ecx,30*65536+200 ;[ª®®à¤¨ â ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y] |
mov edx,0x03AABBCC ;0xXYRRGGBB Y =3 - ¢ë¢®¤ à ¬ª¨, ¨á¯®«ì§ãï áªà¨ |
mov edx,0xb3AABBCC ;0xXYRRGGBB Y =3 - ¢ë¢®¤ à ¬ª¨, ¨á¯®«ì§ãï áªà¨ |
mov esi,0x805080DD ;0xXYRRGGBB - 梥⠧ £®«®¢ª |
mov edi,0x005080DD ;0x00RRGGBB - 梥â à ¬ª¨ |
mov edi,hed ;ª § ⥫ì áâபã á § £®«®¢ª®¬ |
int 0x40 ; à¨á®¢ âì ®ª® ¯à¨«®¦¥¨ï |
add eax,4 ;¥á«¨ ¯à¥¤¯®« £ ¥âáï ¨á¯®«ì§®¢ âì ᪠«ïàë© ¯à®æ¥áá®à, â® ¬®¦® ¨á¯®«ì§®¢ âì ¤ î ¨áâàãªæ¨î |
mov ebx,8*65536+8 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] mov ecx,0x10DDEEFF ; 0xX0RRGGBB, £¤¥ RR, GG, BB § ¤ îâ 梥â ⥪áâ |
mov edx,hed ; 㪠§ ⥫ì ç «® áâப¨ |
mov esi,i_end1 - hed ; ¤«¨ áâப¨, ¤®«¦ ¡ëâì ¥ ¡®«ìè¥ 255 |
int 0x40 ;¢ë¢¥á⨠⥪áâ |
draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ¨¥ edit box'®¢ |
add eax,8 ;ãªæ¨ï 12 - ç âì/§ ª®ç¨âì ¯¥à¥à¨á®¢ªã ®ª . |
mov eax,12 ;ãªæ¨ï 12 - ç âì/§ ª®ç¨âì ¯¥à¥à¨á®¢ªã ®ª . |
mov ebx,2 ;®¤äãªæ¨ï 2 - § ª®ç¨âì ¯¥à¥à¨á®¢ªã ®ª . |
int 0x40 |
ret |
87,10 → 81,10 |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
;DATA ¤ ë¥ |
editboxes: |
edit1 edit_box 168,10,50,0xffffff,0,0,0,512,ed_buffer.1,ed_focus |
edit2 edit_box 168,10,30,0xffffff,0,0,0,99,ed_buffer.2,ed_figure_only |
edit3 edit_box 35,10,70,0xffffff,0,0,0,9,ed_buffer.3,ed_figure_only |
edit4 edit_box 16,10,90,0xffffff,0,0,0,1,ed_buffer.4,ed_figure_only |
edit1 edit_box 168,5,30,0xffffff,0,0,0,512,ed_buffer.1,ed_focus |
edit2 edit_box 168,5,10,0xffffff,0,0,0,99,ed_buffer.2,ed_figure_only |
edit3 edit_box 35,5,50,0xffffff,0,0,0,9,ed_buffer.3,ed_figure_only |
edit4 edit_box 16,5,70,0xffffff,0,0,0,1,ed_buffer.4,ed_figure_only |
editboxes_end: |
;data_of_code dd 0 |
ed_buffer: |
101,8 → 95,8 |
;text_b: db '®«-¢® ᨬ¢®«®¢' |
;buffer: dd 0 |
buffer_end: |
hed db 'EDITBOX optimization and retype <Lrz> date 01.02.2007' |
hed db 'EDITBOX optimization and retype <Lrz> date 26.01.2007',0 |
i_end1: |
rb 2048 |
rb 1024 |
i_end: |
keymap: |