Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 1097 → Rev 1098

/programs/media/scrshoot/srectwin.inc
1,71 → 1,111
set_rect_window:
mov ebx,set_rect_window_procinfo
call get_slot_n
mov ebx,set_rect_window_procinfo
call get_slot_n
 
mov [set_rect_window_slot],ecx
mov [set_rect_window_slot],ecx
 
set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse)
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
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
wait_event .red,.key,.button,.mouse
 
.key:
get_key
get_key
 
key_edit_boxes rect_input,rect_input_end
push dword rect_input.left
call [edit_box_key]
 
call read_rect
call draw_rect_on_screen
push dword rect_input.top
call [edit_box_key]
 
jmp .still
push dword rect_input.width
call [edit_box_key]
 
push dword rect_input.height
call [edit_box_key]
; key_edit_boxes rect_input,rect_input_end
 
call read_rect
call draw_rect_on_screen
 
jmp .still
 
.button:
get_pressed_button
get_pressed_button
 
cmp ah,1
jne @f
btr dword [flags],3
jmp close
cmp ah,1
jne @f
btr dword [flags],3
jmp close
@@:
 
jmp .still
jmp .still
 
.mouse:
get_active_window
cmp eax,[set_rect_window_slot]
jne .still
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
push dword rect_input.left
call [edit_box_mouse]
 
jmp .still
push dword rect_input.top
call [edit_box_mouse]
 
push dword rect_input.width
call [edit_box_mouse]
 
push dword rect_input.height
call [edit_box_mouse]
 
;;;;;;;;;;;;;;;;;;;;;;
push dword use_rect_active_window
call [check_box_mouse]
 
; 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
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
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
mcall
 
draw_labels rect_input_labels,rect_input_labels_end
draw_labels rect_input_labels,rect_input_labels_end
 
draw_edit_boxes rect_input,rect_input_end
push dword rect_input.left
call [edit_box_draw]
 
draw_check_boxes riw_check_boxes,riw_check_boxes_end
push dword rect_input.top
call [edit_box_draw]
 
call read_rect
call draw_rect_on_screen
push dword rect_input.width
call [edit_box_draw]
 
stop_draw_window
push dword rect_input.height
call [edit_box_draw]
;;;;;;;;;;;;;;;;;;;;;;
push dword use_rect_active_window
call [check_box_draw]
; 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
 
;--------------------------------------------------------------------
72,119 → 112,162
;--- ‘ç¨â뢠­¨¥ ®¡« â¨ ----------------------------------------------
;--------------------------------------------------------------------
read_rect:
bt dword [use_rect_active_window.flags],1
jc read_rect_from_active_window
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 edi,rect_input_buffer.left
call zstr_to_int
cmp ax,[scr.width]
jb @f
mov ax,[scr.width]
@@:
mov [rect.left],ax
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 edi,rect_input_buffer.top
call zstr_to_int
cmp ax,[scr.height]
jb @f
mov ax,[scr.height]
@@:
mov [rect.top],ax
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 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 [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 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
mov [rect.height],ax
ret
 
read_rect_from_active_window:
call get_active_window_info
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
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
mov eax,13
mov ebx,150*65536+80
mov ecx,5*65536+60
xor edx,edx
mcall
 
;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
;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.height]
div ebx
push ax
 
xor edx,edx
movzx eax,word [rect.width]
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.top]
div ebx
push ax
 
xor edx,edx
movzx eax,word [rect.left]
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 bx
add bx,150
shl ebx,16
 
pop cx
add cx,5
shl ecx,16
pop cx
add cx,5
shl ecx,16
 
pop bx
pop cx
pop bx
pop cx
 
mov edx,0xffffff
mov eax,13
int 0x40
mov edx,0xffffff
mov eax,13
mcall
ret
 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;DATA ¤ ­­ë¥
;‚ᥣ¤  ᮡ«î¤ âì ¯®á«¥¤®¢ â¥«ì­®áâì ¢ ¨¬¥­¨.
system_path db '/sys/lib/'
library_name db 'box_lib.obj',0
err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library box_lib.obj',0
 
myimport:
 
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
version_ed dd aVersion_ed
 
check_box_draw dd aCheck_box_draw
check_box_mouse dd aCheck_box_mouse
version_ch dd aVersion_ch
 
option_box_draw dd aOption_box_draw
option_box_mouse dd aOption_box_mouse
version_op dd aVersion_op
 
dd 0
dd 0
 
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
aVersion_ed db 'version_ed',0
 
aCheck_box_draw db 'check_box_draw',0
aCheck_box_mouse db 'check_box_mouse',0
aVersion_ch db 'version_ch',0
 
aOption_box_draw db 'option_box_draw',0
aOption_box_mouse db 'option_box_mouse',0
aVersion_op db 'version_op',0
 
 
 
rect_input:
.left edit_box 35,95,5,cl_white,0,0,0,5,rect_input_buffer.left,\
.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,\
.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,\
.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
200,11 → 283,11
rect_input_labels_text:
.left db 'Žâáâ㯠᫥¢ :',0
.top db 'Žâáâ㯠ᢥàåã:',0
.width db '˜¨à¨­ :',0
.width db '˜¨à¨­ :',0
.height db '‚ëá®â :',0
 
riw_check_boxes:
use_rect_active_window check_box 10,85,cl_white,0,0,\
use_rect_active_window check_box 10,85,5,11,cl_white,0,0,\
riw_check_boxes_text.1,\
riw_check_boxes_text.2-riw_check_boxes_text.1
riw_check_boxes_end: