Subversion Repositories Kolibri OS

Rev

Rev 6766 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. align 4
  2. set_rect_window:
  3.         mov     ebx,set_rect_window_procinfo
  4.         call    get_slot_n
  5.  
  6.         mov     [set_rect_window_slot],ecx
  7.  
  8.         set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse)
  9.         call    init_rect
  10.         edit_boxes_set_sys_color rect_input,rect_input_end,sc
  11. .red:
  12.         labels_set_sys_color rect_input_labels,rect_input_labels_end,sc
  13.         check_boxes_set_sys_color2 riw_check_boxes,riw_check_boxes_end,sc
  14.         call    .draw_window
  15. align 4
  16. .still:
  17.         wait_event .red,.key,.button,.mouse
  18.  
  19. .key:
  20.         get_key
  21.  
  22.         stdcall    [edit_box_key], rect_input.left
  23.         stdcall    [edit_box_key], rect_input.top
  24.         stdcall    [edit_box_key], rect_input.width
  25.         stdcall    [edit_box_key], rect_input.height
  26.  
  27.         call    read_rect
  28.         call    draw_rect_on_screen
  29.  
  30.         jmp     .still
  31.  
  32. .button:
  33.         get_pressed_button
  34.  
  35.         cmp     ah,1
  36.         jne     @f
  37.         btr     dword [flags],3
  38.         jmp     close
  39. @@:
  40.  
  41.         jmp     .still
  42.  
  43. .mouse:
  44.         get_active_window
  45.         cmp     eax,[set_rect_window_slot]
  46.         jne     .still
  47.  
  48.         stdcall    [edit_box_mouse], rect_input.left
  49.         stdcall    [edit_box_mouse], rect_input.top
  50.         stdcall    [edit_box_mouse], rect_input.width
  51.         stdcall    [edit_box_mouse], rect_input.height
  52.  
  53. ;;;;;;;;;;;;;;;;;;;;;;
  54.         stdcall    [check_box_mouse], use_rect_active_window
  55.  
  56.         jmp     .still
  57.  
  58. align 4
  59. .draw_window:
  60.         start_draw_window
  61.  
  62.         mov     edx,[sc.work]
  63.         add     edx,0x33000000
  64.         mov     edi,riw_grab_text
  65.         xor     esi,esi
  66.         mcall   SF_CREATE_WINDOW, 100*65536+250, 100*65536+130
  67.  
  68.         draw_labels rect_input_labels,rect_input_labels_end
  69.  
  70.         stdcall    [edit_box_draw], rect_input.left
  71.         stdcall    [edit_box_draw], rect_input.top
  72.         stdcall    [edit_box_draw], rect_input.width
  73.         stdcall    [edit_box_draw], rect_input.height
  74. ;;;;;;;;;;;;;;;;;;;;;;
  75.         stdcall    [check_box_draw], use_rect_active_window
  76.  
  77.         call    read_rect
  78.         call    draw_rect_on_screen
  79.  
  80.         stop_draw_window
  81. ret
  82.  
  83. align 4
  84. init_rect:
  85.         bt      dword [use_rect_active_window.flags],1
  86.         jc      init_rect_from_active_window
  87. pushad
  88.         mov     edi,rect_input_buffer.left
  89.         movsx   eax,word[rect.left]
  90.                 mov     ecx,rect_input.left
  91.                 call    init_editbox
  92.         mov     edi,rect_input_buffer.top
  93.         movsx   eax,word[rect.top]
  94.                 mov     ecx,rect_input.top
  95.                 call    init_editbox
  96.         mov     edi,rect_input_buffer.width
  97.         movsx   eax,word[rect.width]
  98.                 mov     ecx,rect_input.width
  99.                 call    init_editbox
  100.         mov     edi,rect_input_buffer.height
  101.         movsx   eax,word[rect.height]
  102.                 mov     ecx,rect_input.height
  103.                 call    init_editbox
  104. popad
  105. ret
  106.  
  107. align 4
  108. init_rect_from_active_window:
  109.  
  110. ret
  111.  
  112. align 4
  113. init_editbox:
  114.                 push    edi
  115.                 push    ecx
  116.                 xor     ebx,ebx
  117.                 inc     ebx
  118.                 cmp     eax,10
  119.                 jl @f
  120.                 inc     ebx
  121.                 @@:
  122.                 cmp     eax,100
  123.                 jl @f
  124.                 inc     ebx
  125.                 @@:
  126.                 cmp     eax,1000
  127.                 jl @f
  128.                 inc     ebx
  129.                 @@:
  130.                 call    int_to_str
  131.                 call    [edit_box_set_text] ;ecx,edi
  132. ret
  133. ;--------------------------------------------------------------------
  134. ;--- ‘ç¨â뢠­¨¥ ®¡« á⨠---------------------------------------------
  135. ;--------------------------------------------------------------------
  136. align 4
  137. read_rect:
  138.         bt      dword [use_rect_active_window.flags],1
  139.         jc      read_rect_from_active_window
  140.  
  141.         mov     edi,rect_input_buffer.left
  142.         call    zstr_to_int
  143.         cmp     ax,[scr.width]
  144.         jb      @f
  145.         mov     ax,[scr.width]
  146. @@:
  147.         mov     [rect.left],ax
  148.  
  149.         mov     edi,rect_input_buffer.top
  150.         call    zstr_to_int
  151.         cmp     ax,[scr.height]
  152.         jb      @f
  153.         mov     ax,[scr.height]
  154. @@:
  155.         mov     [rect.top],ax
  156.  
  157.         mov     edi,rect_input_buffer.width
  158.         call    zstr_to_int
  159.         mov     bx,[scr.width]
  160.         sub     bx,[rect.left]
  161.         cmp     ax,bx
  162.         jb      @f
  163.         mov     ax,bx
  164. @@:
  165.         mov     [rect.width],ax
  166.  
  167.         mov     edi,rect_input_buffer.height
  168.         call    zstr_to_int
  169.         mov     bx,[scr.height]
  170.         sub     bx,[rect.top]
  171.         cmp     ax,bx
  172.         jb      @f
  173.         mov     ax,bx
  174. @@:
  175.         mov     [rect.height],ax
  176. ret
  177.  
  178. align 4
  179. read_rect_from_active_window:
  180.         call    get_active_window_info
  181.  
  182.         mov     eax,[active_app.left]
  183.         mov     [rect.left],ax
  184.         mov     eax,[active_app.top]
  185.         mov     [rect.top],ax
  186.         mov     eax,[active_app.width]
  187.         inc     eax
  188.         mov     [rect.width],ax
  189.         mov     eax,[active_app.height]
  190.         inc     eax
  191.         mov     [rect.height],ax
  192. ret
  193.  
  194. align 4
  195. draw_rect_on_screen:
  196.  
  197.         xor     edx,edx
  198.         mcall   SF_DRAW_RECT, 150*65536+80, 5*65536+60
  199.  
  200.         ;movzx   eax,word [rect.left]
  201.         ;mul     word [scr.width]
  202.         xor     edx,edx
  203.         movzx   eax,word [scr.width]
  204.         mov     ebx,80
  205.         div     ebx
  206.         mov     ebx,eax
  207.  
  208.         xor     edx,edx
  209.         movzx   eax,word [rect.height]
  210.         div     ebx
  211.         push    ax
  212.  
  213.         xor     edx,edx
  214.         movzx   eax,word [rect.width]
  215.         div     ebx
  216.         push    ax
  217.  
  218.         xor     edx,edx
  219.         movzx   eax,word [rect.top]
  220.         div     ebx
  221.         push    ax
  222.  
  223.         xor     edx,edx
  224.         movzx   eax,word [rect.left]
  225.         div     ebx
  226.         push    ax
  227.  
  228.         pop     bx
  229.         add     bx,150
  230.         shl    ebx,16
  231.  
  232.         pop     cx
  233.         add     cx,5
  234.         shl     ecx,16
  235.  
  236.         pop     bx
  237.         pop     cx
  238.  
  239.         mcall   SF_DRAW_RECT,,,0xffffff
  240. ret
  241.  
  242. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  243. ;DATA ¤ ­­ë¥
  244.  
  245. system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
  246. system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
  247. system_dir_LibImg   db '/sys/lib/libimg.obj',0
  248.  
  249. ;---------------------------------------------------------------------
  250. align 4
  251. ProcLib_import:
  252. OpenDialog_Init         dd aOpenDialog_Init
  253. OpenDialog_Start        dd aOpenDialog_Start
  254. ;OpenDialog__Version    dd aOpenDialog_Version
  255.         dd      0
  256.         dd      0
  257. aOpenDialog_Init        db 'OpenDialog_init',0
  258. aOpenDialog_Start       db 'OpenDialog_start',0
  259. ;aOpenDialog_Version    db 'Version_OpenDialog',0
  260. ;---------------------------------------------------------------------
  261. align 4
  262. Box_lib_import:
  263. ;init_lib               dd a_init
  264. ;version_lib            dd a_version
  265.  
  266. edit_box_draw           dd aEdit_box_draw
  267. edit_box_key            dd aEdit_box_key
  268. edit_box_mouse          dd aEdit_box_mouse
  269. edit_box_set_text       dd aEdit_box_set_text
  270. ;version_ed             dd aVersion_ed
  271.  
  272. init_checkbox           dd aInit_checkbox
  273. check_box_draw          dd aCheck_box_draw
  274. check_box_mouse         dd aCheck_box_mouse
  275. ;version_ch     dd      aVersion_ch
  276.  
  277. option_box_draw dd aOption_box_draw
  278. option_box_mouse        dd aOption_box_mouse
  279. ;version_op             dd aVersion_op
  280.  
  281. PathShow_prepare        dd sz_PathShow_prepare
  282. PathShow_draw           dd sz_PathShow_draw
  283. ;Version_path_show      dd szVersion_path_show
  284.                         dd 0,0
  285.  
  286. ;a_init                 db 'lib_init',0
  287. ;a_version              db 'version',0
  288.  
  289. aEdit_box_draw          db 'edit_box',0
  290. aEdit_box_key           db 'edit_box_key',0
  291. aEdit_box_mouse         db 'edit_box_mouse',0
  292. aEdit_box_set_text      db 'edit_box_set_text',0
  293. ;aVersion_ed            db 'version_ed',0
  294.  
  295.  
  296. aInit_checkbox   db 'init_checkbox2',0
  297. aCheck_box_draw  db 'check_box_draw2',0
  298. aCheck_box_mouse db 'check_box_mouse2',0
  299. ;aVersion_ch     db 'version_ch2',0
  300.  
  301. aOption_box_draw        db 'option_box_draw',0
  302. aOption_box_mouse       db 'option_box_mouse',0
  303. ;aVersion_op            db 'version_op',0
  304.  
  305. sz_PathShow_prepare     db 'PathShow_prepare',0
  306. sz_PathShow_draw        db 'PathShow_draw',0
  307. ;szVersion_path_show    db 'version_PathShow',0
  308. ;---------------------------------------------------------------------
  309. align 4
  310. import_libimg:
  311.         dd alib_init1
  312.         img_is_img  dd aimg_is_img
  313.         img_info    dd aimg_info
  314.         img_from_file dd aimg_from_file
  315.         img_to_file dd aimg_to_file
  316.         img_from_rgb dd aimg_from_rgb
  317.         img_to_rgb  dd aimg_to_rgb
  318.         img_to_rgb2 dd aimg_to_rgb2
  319.         img_decode  dd aimg_decode
  320.         img_encode  dd aimg_encode
  321.         img_create  dd aimg_create
  322.         img_destroy dd aimg_destroy
  323.         img_destroy_layer dd aimg_destroy_layer
  324.         img_count   dd aimg_count
  325.         img_lock_bits dd aimg_lock_bits
  326.         img_unlock_bits dd aimg_unlock_bits
  327.         img_flip    dd aimg_flip
  328.         img_flip_layer dd aimg_flip_layer
  329.         img_rotate  dd aimg_rotate
  330.         img_rotate_layer dd aimg_rotate_layer
  331.         img_draw    dd aimg_draw
  332. dd 0,0
  333.         alib_init1   db 'lib_init',0
  334.         aimg_is_img  db 'img_is_img',0
  335.         aimg_info    db 'img_info',0
  336.         aimg_from_file db 'img_from_file',0
  337.         aimg_to_file db 'img_to_file',0
  338.         aimg_from_rgb db 'img_from_rgb',0
  339.         aimg_to_rgb  db 'img_to_rgb',0
  340.         aimg_to_rgb2 db 'img_to_rgb2',0
  341.         aimg_decode  db 'img_decode',0
  342.         aimg_encode  db 'img_encode',0
  343.         aimg_create  db 'img_create',0
  344.         aimg_destroy db 'img_destroy',0
  345.         aimg_destroy_layer db 'img_destroy_layer',0
  346.         aimg_count   db 'img_count',0
  347.         aimg_lock_bits db 'img_lock_bits',0
  348.         aimg_unlock_bits db 'img_unlock_bits',0
  349.         aimg_flip    db 'img_flip',0
  350.         aimg_flip_layer db 'img_flip_layer',0
  351.         aimg_rotate  db 'img_rotate',0
  352.         aimg_rotate_layer db 'img_rotate_layer',0
  353.         aimg_draw    db 'img_draw',0
  354. ;---------------------------------------------------------------------
  355. ;width,left,top,color,shift_color,focus_border_color,\
  356. ;       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
  357.  
  358. rect_input:
  359. .left   edit_box 35,95,5, cl_white,0,0,0,0,5,rect_input_buffer.left,  mouse_dd1,ed_figure_only ;+ed_focus
  360. .top    edit_box 35,95,25,cl_white,0,0,0,0,5,rect_input_buffer.top,   mouse_dd1,ed_figure_only
  361. .width  edit_box 35,95,45,cl_white,0,0,0,0,5,rect_input_buffer.width, mouse_dd1,ed_figure_only
  362. .height edit_box 35,95,65,cl_white,0,0,0,0,5,rect_input_buffer.height,mouse_dd1,ed_figure_only
  363. rect_input_end:
  364. mouse_dd1       rd 1
  365. rect_input_labels:
  366. .left   label 10,10,0,rect_input_labels_text.left
  367. .top    label 10,30,0,rect_input_labels_text.top
  368. .width  label 10,50,0,rect_input_labels_text.width
  369. .height label 10,70,0,rect_input_labels_text.height
  370. rect_input_labels_end:
  371.  
  372. rect_input_labels_text:
  373. if lang eq ru
  374. .left db 'Žâáâ㯠᫥¢ :',0
  375. .top  db 'Žâáâ㯠ᢥàåã:',0
  376. .width  db '˜¨à¨­ :',0
  377. .height db '‚ëá®â :',0
  378. else
  379. .left db 'Left:',0
  380. .top  db 'Top:',0
  381. .width  db 'Width:',0
  382. .height db 'Height:',0
  383. end if
  384.  
  385. riw_check_boxes:
  386. use_rect_active_window check_box2 (10 shl 16)+10,(85 shl 16) +10,5,cl_white,0,0,\
  387. riw_check_boxes_text, ch_flag_bottom
  388. riw_check_boxes_end:
  389.  
  390. if lang eq ru
  391. riw_check_boxes_text db 'ˆá¯®«ì§®¢ âì ®¡« áâì  ªâ¨¢­®£® ®ª­ ',0
  392. riw_grab_text db 'Š®®à¤¨­ âë ¨ à §¬¥àë ®¡« áâ¨:',0
  393. else
  394. riw_check_boxes_text db 'Use area of the active window',0
  395. riw_grab_text db 'Coordinates and size of the field:',0
  396. end if