0,0 → 1,216 |
set_rect_window: |
mov ebx,set_rect_window_procinfo |
call get_slot_n |
|
mov [set_rect_window_slot],ecx |
|
set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse) |
.red: |
edit_boxes_set_sys_color rect_input,rect_input_end,sc |
labels_set_sys_color rect_input_labels,rect_input_labels_end,sc |
check_boxes_set_sys_color riw_check_boxes,riw_check_boxes_end,sc |
call .draw_window |
.still: |
wait_event .red,.key,.button,.mouse |
|
.key: |
get_key |
|
key_edit_boxes rect_input,rect_input_end |
|
call read_rect |
call draw_rect_on_screen |
|
jmp .still |
|
.button: |
get_pressed_button |
|
cmp ah,1 |
jne @f |
btr dword [flags],3 |
jmp close |
@@: |
|
jmp .still |
|
.mouse: |
get_active_window |
cmp eax,[set_rect_window_slot] |
jne .still |
|
mouse_edit_boxes rect_input,rect_input_end |
mouse_check_boxes riw_check_boxes,riw_check_boxes_end |
|
jmp .still |
|
.draw_window: |
start_draw_window |
|
xor eax,eax |
mov ebx,100*65536+250 |
mov ecx,100*65536+130 |
mov edx,[sc.work] |
add edx,0x33000000 |
mov edi,riw_grab_text |
xor esi,esi |
int 0x40 |
|
draw_labels rect_input_labels,rect_input_labels_end |
|
draw_edit_boxes rect_input,rect_input_end |
|
draw_check_boxes riw_check_boxes,riw_check_boxes_end |
|
call read_rect |
call draw_rect_on_screen |
|
stop_draw_window |
ret |
|
;-------------------------------------------------------------------- |
;--- ç¨âë¢ ¨¥ ®¡« ⨠---------------------------------------------- |
;-------------------------------------------------------------------- |
read_rect: |
bt dword [use_rect_active_window.flags],1 |
jc read_rect_from_active_window |
|
mov edi,rect_input_buffer.left |
call zstr_to_int |
cmp ax,[scr.width] |
jb @f |
mov ax,[scr.width] |
@@: |
mov [rect.left],ax |
|
mov edi,rect_input_buffer.top |
call zstr_to_int |
cmp ax,[scr.height] |
jb @f |
mov ax,[scr.height] |
@@: |
mov [rect.top],ax |
|
mov edi,rect_input_buffer.width |
call zstr_to_int |
mov bx,[scr.width] |
sub bx,[rect.left] |
cmp ax,bx |
jb @f |
mov ax,bx |
@@: |
mov [rect.width],ax |
|
mov edi,rect_input_buffer.height |
call zstr_to_int |
mov bx,[scr.height] |
sub bx,[rect.top] |
cmp ax,bx |
jb @f |
mov ax,bx |
@@: |
mov [rect.height],ax |
ret |
|
read_rect_from_active_window: |
call get_active_window_info |
|
mov eax,[active_app.left] |
mov [rect.left],ax |
mov eax,[active_app.top] |
mov [rect.top],ax |
mov eax,[active_app.width] |
inc eax |
mov [rect.width],ax |
mov eax,[active_app.height] |
inc eax |
mov [rect.height],ax |
ret |
|
draw_rect_on_screen: |
|
mov eax,13 |
mov ebx,150*65536+80 |
mov ecx,5*65536+60 |
xor edx,edx |
int 0x40 |
|
;movzx eax,word [rect.left] |
;mul word [scr.width] |
xor edx,edx |
movzx eax,word [scr.width] |
mov ebx,80 |
div ebx |
mov ebx,eax |
|
xor edx,edx |
movzx eax,word [rect.height] |
div ebx |
push ax |
|
xor edx,edx |
movzx eax,word [rect.width] |
div ebx |
push ax |
|
xor edx,edx |
movzx eax,word [rect.top] |
div ebx |
push ax |
|
xor edx,edx |
movzx eax,word [rect.left] |
div ebx |
push ax |
|
pop bx |
add bx,150 |
shl ebx,16 |
|
pop cx |
add cx,5 |
shl ecx,16 |
|
pop bx |
pop cx |
|
mov edx,0xffffff |
mov eax,13 |
int 0x40 |
ret |
|
rect_input: |
.left edit_box 35,95,5,cl_white,0,0,0,5,rect_input_buffer.left,\ |
ed_figure_only+ed_focus |
.top edit_box 35,95,25,cl_white,0,0,0,5,rect_input_buffer.top,\ |
ed_figure_only |
.width edit_box 35,95,45,cl_white,0,0,0,5,rect_input_buffer.width,\ |
ed_figure_only |
.height edit_box 35,95,65,cl_white,0,0,0,5,rect_input_buffer.height,\ |
ed_figure_only |
rect_input_end: |
|
rect_input_labels: |
.left label 10,10,0,rect_input_labels_text.left |
.top label 10,30,0,rect_input_labels_text.top |
.width label 10,50,0,rect_input_labels_text.width |
.height label 10,70,0,rect_input_labels_text.height |
rect_input_labels_end: |
|
rect_input_labels_text: |
.left db 'âáâ㯠᫥¢ :',0 |
.top db 'âáâ㯠ᢥàåã:',0 |
.width db '¨à¨ :',0 |
.height db 'ëá®â :',0 |
|
riw_check_boxes: |
use_rect_active_window check_box 10,85,cl_white,0,0,\ |
riw_check_boxes_text.1,\ |
riw_check_boxes_text.2-riw_check_boxes_text.1 |
riw_check_boxes_end: |
|
riw_check_boxes_text: |
.1 db 'ᯮ«ì§®¢ âì ®¡« áâì ªâ¨¢®£® ®ª ' |
.2 db '' |
|
riw_grab_text db '®®à¤¨ âë ¨ à §¬¥àë ®¡« áâ¨:',0 |