Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;   Screenshooter for Kolibri
  3. ;
  4. ; version:      1.0
  5. ; last update:  08/09/2010
  6. ; written by:   Marat Zakiyanov aka Mario79, aka Mario
  7. ; changes:      select path for save with OpenDialog,
  8. ;               bag fix for threads stacks
  9. ;---------------------------------------------------------------------
  10. ; 01.06.09 - Š®¬¯®­¥­âë ¡¥àãâìáï ¨§ á¨á⥬­®© ¡¨¡«¨®â¥ª¨ <Lrz>
  11. ; €¢â®à ¯à®£à ¬¬ë …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32)
  12. ; 24.07.2008 <Lrz> ®¡­®¢«¥­ editbox
  13. ; 01.02.07 - ®¡­®¢«ñ­ editbox
  14. ; 31.01.07 - ¢áñ ⥯¥àì à¨áã¥âáï ®â­®á¨â¥«ì­® ª«¨¥­â᪮© ®¡« áâ¨
  15. ; 02.11.10 - ˆá¯®«ì§ã¥âáï checkbox ¢¥àᨨ 2
  16.  
  17. title equ 'Screenshooter v 1.0' ; ‡ £®«®¢®ª ®ª­ 
  18. include '../../develop/libraries/box_lib/load_lib.mac'
  19. include '../../develop/libraries/box_lib/trunk/box_lib.mac'
  20. ;include '../../develop/examples/editbox/trunk/editbox.inc'
  21. include '../../macros.inc'
  22. include 'txtbut.inc'
  23. include 'label.inc'
  24. include 'textwork.inc'
  25. include 'scrshoot.mac'
  26.  
  27. ;include 'macros.inc'  ; ¢áâ ¢«ï¥¬ ¬ ªà®áë
  28. ;        meos_header  cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë
  29. use32                
  30.     org 0x0
  31.     db 'MENUET01'
  32.     dd 0x1
  33.     dd start
  34.     dd IM_END
  35.     dd i_end
  36.     dd stacktop
  37.     dd cmdstr
  38.     dd cur_dir_path
  39.  
  40. align 4
  41.         @use_library
  42.         use_txt_button                          ;  |
  43.         use_label                               ;  |-- GUI ª®¬¯®­¥­âë ¨ ­¥ª®â®àë¥ ¯à®æ¥¤ãàë
  44.         use_text_work                           ; /
  45. include 'scrwin.inc'  ; ¢áâ ¢«ï¥¬ ª®¤ ®ª­  ¯à¤¯à®á¬®âà 
  46. include 'scrsavef.inc'; ¢áâ ¢«ï¥¬ ¯à®æ¥¤ãàã á®åà ­¥­¨ï ä ©« 
  47.  
  48. include 'gp.inc'
  49. include 'srectwin.inc'
  50. include 'lang.inc'
  51.  
  52. macro get_sys_colors col_buf
  53. {
  54.         ;mov     eax,48
  55.         push    48
  56.         pop     eax
  57.         ;mov     ebx,3
  58.         push    3
  59.         pop     ebx
  60.         ;mov     ecx,col_buf
  61.         push    col_buf
  62.         pop     ecx
  63.         ;mov     edx,40
  64.         push    40
  65.         pop     edx
  66.         mcall
  67. }
  68.  
  69. ;--- ­ ç «® ¯à®£à ¬¬ë ---
  70. align 4
  71. start:
  72. ;sys_load_library  library_name, cur_dir_path, library_path, system_path, \
  73. ;err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  74.  
  75. load_libraries l_libs_start,end_l_libs
  76.  
  77. ;if return code =-1 then exit, else nornary work
  78. ;        cmp     eax,-1
  79.         inc     eax
  80.         test    eax,eax
  81.         jz      close
  82. ;;;;;;;;;;;;;;;; init memory 68/11
  83.         mov     eax,68
  84.         mov     ebx,11
  85.         mcall
  86.         test    eax,eax
  87.         jz      close
  88.  
  89. ;--------------------------------------------------------------------- 
  90.         mov     edi,filename_area
  91.         mov     esi,start_temp_file_name
  92.         xor     eax,eax
  93.         cld
  94. @@:
  95.         lodsb
  96.         stosb
  97.         test    eax,eax
  98.         jnz     @b
  99.  
  100.  
  101.         mov     edi,fname_buf
  102.         mov     esi,ed_buffer.1
  103.         xor     eax,eax
  104.         cld
  105. @@:
  106.         lodsb
  107.         stosb
  108.         test    eax,eax
  109.         jnz     @b
  110.        
  111. ;OpenDialog     initialisation
  112.         push    dword OpenDialog_data
  113.         call    [OpenDialog_Init]
  114.  
  115. ; prepare for PathShow
  116.         push    dword PathShow_data_1
  117.         call    [PathShow_prepare]
  118. ;--------------------------------------------------------------------- 
  119.         ;mov     al,[gs:1280*4*1024]
  120.                     ; ãáâ ­ ¢«¨¢ ¥¬ ipc ¡ãää¥à
  121.         push    60
  122.         pop     eax
  123.         ;mov     ebx,1
  124.         xor     ebx,ebx
  125.         inc     ebx
  126.         mov     ecx,app_ipc
  127.         mov     edx,32
  128.         mcall
  129.  
  130.         push    66   ; ãáâ ­ ¢«¨¢ ¥¬ £«®¡ «ì­ãî £®àïçãî ª« ¢¨èã
  131.         pop     eax
  132.         push    eax
  133.         mov     ebx,4
  134.         mov     cl,55    ; 55 - PrintScrn
  135.         xor     edx,edx
  136.         mcall
  137.  
  138.         mov     ebx,app
  139.         call    get_slot_n
  140.         mov     [slot_n],ecx
  141.  
  142.         ; ãáâ ­ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
  143.         set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse+evm_ipc)
  144. ;¨­¨æ¨ «¨§ æ¨ï checkboxes
  145.         init_checkboxes2        check_boxes,check_boxes_end
  146.  
  147. ; á ¯à룠¥¬ ¯à¨ ª ¦¤®© ¯¥à¥à¨á®¢ª¥
  148. red:
  149.         get_procinfo app   ; ¯®«ãç ¥¬ ¨­ä®à¬ æ¨î ® ¯à®æ¥áá¥
  150.         get_sys_colors sc  ; ¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
  151.  
  152.         ; ãáâ ­ ¢«¨¢ ¥¬ á¨á⥬­ë¥ æ¢¥â  ã GUI ª®¬¯®­¥­â®¢
  153.         txt_but_set_sys_color buttons,buttons_end,sc             ; \
  154.         labels_set_sys_color labels,labels_end,sc                ; |
  155.         check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc; |
  156. ;       check_boxes_set_sys_color check_boxes,check_boxes_end,sc ; |
  157.         edit_boxes_set_sys_color editboxes,editboxes_end,sc      ; /
  158.  
  159.         get_screen_prop scr ; ¯®«ãç ¥¬ ¨­ä®à¬ æ¨î ®¡ íªà ­¥
  160.         call    draw_window ; ¯¥à¥à¨á®¢ë¢ ¥¬ ®ª­®
  161. still:
  162.         wait_event red,key,button,mouse,ipc,still ; ¦¤¥¬ ᮡë⨩
  163.  
  164. key:
  165.         get_key
  166.         cmp     al,2
  167.         jne     @f
  168.         cmp     ah,55
  169.         jne     still
  170.         mov     [PrintScreen],1
  171.         call    shoot
  172.         mov     [PrintScreen],0
  173.         jmp     still
  174. @@:
  175. ;        key_edit_boxes editboxes,editboxes_end
  176. ;       push    dword edit1
  177. ;       call    [edit_box_key]
  178.  
  179.         push    dword edit2
  180.         call    [edit_box_key]
  181.  
  182.         push    dword edit3
  183.         call    [edit_box_key]
  184.  
  185.         push    dword edit4
  186.         call    [edit_box_key]
  187.  
  188.         jmp     still
  189. button:
  190.         get_pressed_button
  191.         cmp     ah,1
  192.         je      p_close
  193.         txt_but_ev buttons,buttons_end
  194.         jmp     still
  195. mouse:
  196.         get_active_window
  197.         cmp     eax,[slot_n]
  198.         jne     still
  199. ;----------------------------------
  200. ;       push    dword edit1
  201. ;       call    [edit_box_mouse]
  202.         push    dword edit2
  203.         call    [edit_box_mouse]
  204.         push    dword edit3
  205.         call    [edit_box_mouse]
  206.         push    dword edit4
  207.         call    [edit_box_mouse]
  208. ;----------------------------------
  209.         checkboxes_mouse2       check_boxes,check_boxes_end
  210. ;       push    dword ch1
  211. ;       call    [check_box_mouse]
  212. ;       push    dword ch2
  213. ;       call    [check_box_mouse]
  214. ;       push    dword ch3
  215. ;       call    [check_box_mouse]
  216. ;       push    dword ch4
  217. ;       call    [check_box_mouse]
  218. ;       push    dword ch5
  219. ;       call    [check_box_mouse]
  220. ;       push    dword ch6
  221. ;       call    [check_box_mouse]
  222. ;       push    dword use_rect
  223. ;       call    [check_box_mouse]
  224. ;-----------------------------------
  225. ;        mouse_check_boxes check_boxes,check_boxes_end
  226. ;        mouse_edit_boxes editboxes,editboxes_end
  227.         jmp     still
  228. ipc:
  229.         cmp     word [app_ipc+8],2
  230.         jne     @f
  231.         min_window
  232.         jmp     .clear_ipc
  233. @@:
  234.         cmp     word [app_ipc+8],3
  235.         jne     @f
  236.         mov     ecx,[slot_n]
  237.         activ_window
  238.         jmp     .clear_ipc
  239. @@:
  240.         call    draw_number
  241.         call    dr_st
  242.  
  243. .clear_ipc:
  244.         cld
  245.         xor     eax,eax
  246.         mov     ecx,32/4
  247.         mov     edi,app_ipc
  248.         rep     stosd
  249.         jmp     still
  250.  
  251. p_close:
  252.         btr     dword [flags],1
  253.  
  254.         bt      dword [flags],3
  255.         jnc     @f
  256.         mov    eax,18
  257.         mov     ebx,eax
  258.         mov     ecx,[set_rect_window_pid]
  259.         mcall
  260. @@:
  261.  
  262. close:
  263.         app_close
  264.  
  265. ;---------------------------------------------------------------------
  266. draw_PathShow:
  267.         pusha
  268.         mcall   13,<4,302>,<35,15>,0xffffff
  269. ; draw for PathShow
  270.         push    dword PathShow_data_1
  271.         call    [PathShow_draw]
  272.         popa
  273.         ret
  274. ;--------------------------------------------------------------------
  275. ;--- ¯à®®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ £« ¢­®£® ®ª­  ---------------------------
  276. ;--------------------------------------------------------------------
  277. draw_window:
  278. start_draw_window        ; ­ ç «® ¯¥à¥à¨á®¢ª¨
  279.         ; ®¯à¥¤¥«ï¥¬ ®ª­®
  280.         get_skin_height
  281.         mov     ebx,100*65536+320
  282.         mov     ecx,100*65536+220
  283.         add     cx,ax
  284.         mov     edx,[sc.work]
  285.         or      edx,0x34000000;0x33000000
  286.         xor     esi,esi
  287.         ;xor     edi,edi
  288.         mov     edi,grab_text
  289.         xor     eax,eax
  290.         mcall
  291.  
  292.         mov     eax,47             ; ¢ë¢®¤¨¬ ç¨á«  ¢ ®ª­®
  293.         mov     bx,4
  294.         shl     ebx,16
  295.         movsx   ecx,word [scr.width] ; è¨à¨­  íªà ­ 
  296.         mov     dx,95
  297.         shl     edx,16
  298.         mov     dx,[label1.top]
  299.         push    dx
  300.         mov     esi,[sc.work_text]
  301.         mcall
  302.         movsx   ecx,word [scr.height]   ; ¢ëá®â  íªà ­ 
  303.         mov     dx,[label2.top]
  304.         mcall
  305.         mov     bx,2
  306.         shl     ebx,16
  307.         movsx   ecx,word [scr.bitspp]   ; ¡¨â ­  ¯¨ªá¥«ì
  308.         mov     dx,240
  309.         shl     edx,16
  310.         pop     dx
  311.         mcall
  312.         mov     bx,6
  313.         shl     ebx,16
  314.         mov     ecx,[scr.bytesps]       ; ¡ ©â ­  áâபã
  315.         mov     dx,[label2.top]
  316.         mcall
  317.  
  318.         call    draw_number      ; ¯à®à¨á®¢ë¢ ¥¬ ­®¬¥à á­¨¬ª 
  319.         call    dr_st
  320.  
  321.         draw_labels labels,labels_end            ; ¬¥âª¨
  322. ;        draw_edit_boxes editboxes,editboxes_end  ; edit_box
  323. ;------ show check editbox -----------
  324. ;       push    dword edit1
  325. ;       call    [edit_box_draw]
  326.         push    dword edit2                                                                                                  
  327.         call    [edit_box_draw]
  328.         push    dword edit3
  329.         call    [edit_box_draw]
  330.         push    dword edit4
  331.         call    [edit_box_draw]
  332. ;------ end check all editbox -------
  333.  
  334.         call    draw_PathShow
  335.  
  336.         draw_txt_buttons buttons,buttons_end     ; ª­®¯ª¨
  337. ;        draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨
  338. ;------ check all checkbox ---------
  339. ;       push    dword ch1
  340. ;       call    [check_box_draw]
  341. ;       push    dword ch2
  342. ;       call    [check_box_draw]       
  343. ;       push    dword ch3
  344. ;       call    [check_box_draw]
  345. ;       push    dword ch4
  346. ;       call    [check_box_draw]
  347. ;       push    dword ch5
  348. ;       call    [check_box_draw]
  349. ;       push    dword ch6
  350. ;       call    [check_box_draw]
  351. ;       push    dword use_rect
  352. ;       call    [check_box_draw]
  353.  
  354.         checkboxes_draw2        check_boxes,check_boxes_end
  355.  
  356. ;------ end check all checkbox ------
  357.  
  358. stop_draw_window      ; ª®­¥æ ¯¥à¥à¨á®¢ª¨
  359. ret
  360.  
  361. shoot:
  362.         bt      dword [ch4.flags],1   ; ¢ª«î祭  «¨ § ¤¥à¦ª  ?
  363.         jnc     @f
  364.         draw_status delay_now
  365.         mov     edi,ed_buffer.2
  366.         call    zstr_to_int
  367.         mov     ebx,eax
  368.         delay
  369. @@:
  370.         call    get_mem_for_shoot; ¯®«ãç ¥¬ ¯ ¬ïâì ¤«ï á­¨¬ª 
  371.  
  372.  
  373.         bts     dword [flags],0       ; ­ã«¥¢®© ä« £ - á­¨¬®ª ¥áâì ¢ ¯ ¬ïâ¨
  374.  
  375.         ; ¤¥« ¥¬ á­¨¬®ª
  376.         draw_status shooting
  377.         mov     esi,scr
  378.         mov     edi,[scr_buf.ptr]
  379.         call    copy_screen_to_image
  380.  
  381.         bt      dword [use_rect.flags],1
  382.         jc      .use_rect
  383.         push    dword [scr]
  384.         jmp     @f
  385. .use_rect:
  386.         push    dword [rect.height]
  387. @@:
  388.         pop     dword [scr_buf.size]
  389.  
  390.         cmp     [autoshoot_flag],1
  391.         jne     .2
  392.        
  393.         bt      dword [ch5.flags],1  ; ¢ª«î祭® «¨  ¢â®á®åà ­¥­¨¥ ?
  394.         jnc     @f
  395.         call    save_file
  396. @@:
  397.         draw_status     shooted_ok
  398. .2:
  399.         bt      dword [flags],1
  400.         jnc     @f
  401.         ret
  402. @@:
  403.  
  404.         bt      dword [ch2.flags],1  ; ¯®ª § âì ®ª­® ¯à¥¤¯à®á¬®âà  ?
  405.         jnc     @f
  406.         cmp     [PrintScreen],0
  407.         jne     @f
  408.         call    show_scr_window
  409.         ret
  410. @@:
  411.         bt      dword [ch5.flags],1  ; ¢ª«î祭® «¨  ¢â®á®åà ­¥­¨¥ ?
  412.         jnc     @f
  413.        
  414. ; invoke OpenDialog
  415.         push    dword OpenDialog_data
  416.         call    [OpenDialog_Start]
  417.         cmp     [OpenDialog_data.status],1
  418.         je      .1
  419.         ret
  420. .1:
  421. ; prepare for PathShow
  422.         push    dword PathShow_data_1
  423.         call    [PathShow_prepare]
  424.  
  425.         call    save_file
  426. @@:
  427.        
  428.         bt      word [ch3.flags],1   ; ¢®ááâ ­®¢¨âì ®ª­® ?
  429.         jnc     @f
  430.  
  431.         delay 100
  432.         mov     ecx,[slot_n]
  433.         activ_window
  434. @@:
  435. ret
  436.  
  437. ;--- ¯®«ãç¨âì ¯ ¬ïâì ¤«ï á­¨¬ª  ---
  438. get_mem_for_shoot:
  439. ;clean memory
  440.         mov     ecx,dword [scr_buf.ptr]
  441.         mov     ebx,13
  442.         mov     eax,68
  443.         mcall
  444.  
  445.         bt      dword [use_rect.flags],1 ; ä®âª âì ®¡« áâì íªà ­ 
  446.         jc      .use_area
  447.         movzx   ecx, word [scr.width]
  448.         movzx   ebx, word [scr.height]
  449.         jmp     @f
  450. .use_area:
  451.         call    read_rect
  452.         movzx   ecx, word [rect.width]
  453.         movzx   ebx, word [rect.height]
  454. @@:
  455.         imul    ecx,ebx
  456.         lea     ecx,[ecx*3]
  457. ;        add     ecx,i_end
  458.         mov     ebx,12
  459.         mov     eax,68
  460.         mcall
  461.         mov     [scr_buf.ptr],eax
  462.         add     eax,ecx
  463.         mov     [scr_buf.end_ptr],ecx
  464. ret
  465.  
  466. ;--- ᮤ âì ®ª­® ¯à®¥¤¯à®á¬®âà  ---
  467. show_scr_window:
  468. pusha
  469.         bt      dword [flags],0
  470.         jnc     @f
  471.         mov     eax,51
  472.         xor     ebx,ebx
  473.         inc     ebx
  474.         mov     ecx,scr_window
  475.         mov     edx,i_end_tread-512
  476.         mcall
  477. @@:
  478. popa
  479. ret
  480.  
  481. ;--- ¯à®ç¨â âì ¨ ­ à¨á®¢ âì ⥪ã騩 ­®¬¥à ---
  482. apply_number:
  483.         mov     edi,ed_buffer.3
  484.         call    zstr_to_int
  485.         mov     [cur_number],eax
  486.         call    draw_number
  487. ret
  488.  
  489. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪ã饣® ­®¬¥à  ---
  490. draw_number:
  491.         mov     edi,sign_n_input
  492.         call    zstr_to_int
  493.         mov     [sign_n],al
  494.         mov     eax,13
  495.         mov     ebx,150*65536+96
  496.         mov     cx,[label9.top]
  497.         shl     ecx,16
  498.         mov     cx,10
  499.         mov     edx,[sc.work]
  500.         mcall
  501.         mov     eax,47
  502.         movsx   bx,byte [sign_n]
  503.         shl     ebx,16
  504.         mov     ecx,[cur_number]
  505.         mov     dx,150
  506.         shl     edx,16
  507.         mov     dx,[label9.top]
  508.         mov     esi,[sc.work_text]
  509.         mcall
  510. ret
  511.  
  512. ;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª  ¢â®áꥬª¨ ---
  513. start_autoshoot:
  514.         bts     dword [flags],1
  515.         jc      @f
  516.         mov     eax,51
  517.         ;mov     ebx,1
  518.         xor     ebx,ebx
  519.         inc     ebx
  520.         mov     ecx,autoshoot
  521.         mov     edx,i_end_tread
  522.         mcall
  523. @@:
  524. ret
  525.  
  526. ;--- ®áâ ­ ¢«¨¢ ¥â íâ®â ¯®â®ª ---
  527. stop_autoshoot:
  528.         btr     dword [flags],1
  529. ret
  530.  
  531. ;--- 横« ¯®â®ª   ¢â®áꥬª¨ ---
  532. autoshoot:
  533.         mov     [autoshoot_flag],1
  534.         mov     ecx,[slot_n]
  535.         activ_window
  536. .next:
  537.         bt      dword [flags],1
  538.         jnc     close
  539.         mov     eax,60
  540.         mov     ebx,2
  541.         mov     ecx,[app.pid]
  542.         mov     edx,messages.draw_number
  543.         mov     esi,2
  544.         mcall
  545.         call    shoot
  546.         jmp     autoshoot.next
  547. .close:
  548.         mov     [autoshoot_flag],0
  549.         jmp     close
  550. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ áâப¨ á®áâ®ï­¨ï ---
  551. ; (¤®«¦­  ¢ë§ë¢ âìáï ¯®â®ª®¬ £« ¢­®£® ®ª­ )
  552. dr_st:
  553.         mov     eax,38              ; ®â१®ª
  554.         mov     ebx,0*65536+310
  555.         mov     ecx,198*65536+198
  556.         mov     edx,[sc.work_graph]
  557.         mcall
  558.  
  559.         mov     eax,13              ; ¯®«®áª 
  560.         mov     bx,310
  561.         mov     ecx,199*65536+15
  562.         mov     edx,[sc.work]
  563.         mcall
  564.  
  565.         mov     edi,status
  566.         call    draw_label
  567. ret
  568.  
  569. ;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ­®¬¥à  á«®â  ¯®â®ª  ---
  570. ; ¢å®¤ ebx - ¡ãää¥à 1024 ¡ ©â
  571. ; ¢ë室 ecx - ­®¬¥à á«®â 
  572. get_slot_n:
  573.         mov     eax,9
  574.         xor     ecx,ecx
  575.         dec     ecx
  576.         mcall
  577.  
  578.         mov     edx,[ebx+30]
  579.         xor     ecx,ecx
  580. @@:
  581.         mov     eax,9
  582.         inc     ecx
  583.         mcall
  584.         cmp     [ebx+30],edx
  585.         je      @f
  586.         jmp     @b
  587. @@:
  588. ret
  589.  
  590. ;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª, ¤¥« î騩 1 á­¨¬®ª ---
  591. one_shoot:
  592.         mov     ecx,one_shoot_thread
  593.         mov     edx,shoot_esp
  594.         jmp     @f
  595. ;--- ¯à®æ¥¤à , § ¯ã᪠îé ï ¯®â®ª, á®åà ­ïî騩 á­¨¬®ª ---
  596. save_shoot:
  597. ; invoke OpenDialog
  598.         push    dword OpenDialog_data
  599.         call    [OpenDialog_Start]
  600.         cmp     [OpenDialog_data.status],1
  601.         je      .1
  602.         ret
  603. .1:
  604. ; prepare for PathShow
  605.         push    dword PathShow_data_1
  606.         call    [PathShow_prepare]
  607.  
  608.         call    draw_PathShow
  609.  
  610.         mov     ecx,save_shoot_thread
  611.         mov     edx,shoot_esp
  612. @@:
  613.         bts     dword [flags],2
  614.         jc      .running
  615.         bt      dword [flags],1
  616.         jc      .running
  617.  
  618.         mov     eax,51
  619.         ;mov     ebx,1
  620.         xor     ebx,ebx
  621.         inc     ebx
  622.         mcall
  623. .running:
  624. ret
  625.  
  626. ;--- ¯®â®ª, ¤¥« î騩 1 á­¨¬®ª ---
  627. one_shoot_thread:
  628.         mov     ecx,[slot_n]
  629.         activ_window
  630.         bt      dword [ch1.flags],1   ; ¬¨­¨¬¨§¨à®¢ âì ®ª­® ?
  631.         jnc      @f
  632.         mov     eax,60
  633.         mov     ebx,2
  634.         mov     ecx,[app.pid]
  635.         mov     edx,messages.min_window
  636.         mov     esi,2
  637.         mcall
  638. @@:
  639.         call    shoot
  640.         btr     dword [flags],2
  641.         jmp     close
  642.  
  643. ;--- ¯à®æ¥¤ãà , ®â¯à ¢«ïîé ï £« ¢­®¬ã ®ª­ã á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥
  644. ; áâப¨ á®áâ®ï­¨ï ---
  645. send_draw_status:
  646.         mov     eax,60
  647.         mov     ebx,2
  648.         mov     ecx,[app.pid]
  649.         mov     edx,messages.draw_status
  650.         mov     esi,2
  651.         mcall
  652. ret
  653.  
  654. ;--- ¯®â®ª, á®åà ­ï ä ©« ---
  655. save_shoot_thread:
  656.         mov     ecx,[slot_n]
  657.         activ_window
  658.         call    save_file
  659.         btr     dword [flags],2
  660.         jmp     close
  661.  
  662. ;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª ®ª­  ãáâ ­®¢ª¨ ®¡« á⨠áꥬª¨ ---
  663. show_set_rect_window:
  664.         bts     dword [flags],3
  665.         jc      @f
  666.         mov     eax,51
  667.         xor     ebx,ebx
  668.         inc     ebx
  669.         mov     ecx,set_rect_window
  670.         mov     edx,set_rect_window_esp
  671.         mcall
  672.  
  673.         mov     [set_rect_window_pid],eax
  674. ret
  675.  
  676. @@:
  677.         mov     eax,18
  678.         mov     ebx,eax
  679.         mov     ecx,[set_rect_window_pid]
  680.         mcall
  681.         btr     dword [flags],3
  682. ret
  683.  
  684. ;--- ¯®«ã祭¨¥ ¨­ä®à¬ æ¨¨ ®¡  ªâ¨¢­®¬ ®ª­¥ ---
  685. get_active_window_info:
  686.         mov    eax,18
  687.         mov    ebx,7
  688.         mcall
  689.  
  690.         mov     ecx,eax
  691.         mov     eax,9
  692.         mov     ebx,active_app
  693.         mcall
  694. ret
  695.  
  696. ;====================================================================
  697. ;=== ¤ ­­ë¥ ¯à®£à ¬¬ë ===============================================
  698. ;====================================================================
  699. messages:
  700. .draw_number dw 0
  701. .draw_status dw 1
  702. .min_window  dw 2
  703. .act_window  dw 3
  704.  
  705. grab_text:
  706.         db      title,0
  707.  
  708. labels:
  709. label1 label 5,5,0,text.1   ; è¨à¨­  íªà ­ 
  710. label2 label 5,15,0,text.2   ; ¢ëá®â  íªà ­ 
  711. label3 label 5,25,0,text.3   ; ¢¢¥¤¨â¥ ¨¬ï ä ©« 
  712. label4 label 150,5,0,text.4  ; ¡¨â ­  ¯¨ªá¥«ì
  713. label5 label 150,15,0,text.5  ; ¡ ©â ­  áâபã
  714. label6 label 115,138,0,text.6  ; 100 = 1 ᥪ.
  715. ;label7 label 10,190,0,text.7
  716. ;label8 label 10,225,0,text.8
  717. label9 label 5,52,0,text.9   ; ­®¬¥à ⥪ã饣® ᨬª 
  718. label10 label 5,185,0,text.10
  719. status label 5,201,0,no_shoot
  720. labels_end:
  721.  
  722. ;---------------------------------------------------------------------
  723. l_libs_start:
  724.  
  725. library01  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
  726. err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
  727.  
  728. library02  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
  729. err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
  730.  
  731. end_l_libs:
  732. ;---------------------------------------------------------------------
  733. editboxes:
  734. ;edit1 edit_box 300,5,35,cl_white,0,0,0,0,300,ed_buffer.1,mouse_dd,ed_focus,10,10       ; ¯ãâì ª ä ©«ã
  735. edit2 edit_box 35,75,134,cl_white,0,0,0,0,9,ed_buffer.2,mouse_dd,ed_figure_only,3,3         ; § ¤¥à¦ª 
  736. edit3 edit_box 35,165,164,cl_white,0,0,0,0,9,ed_buffer.3,mouse_dd,ed_figure_only    ;  ¢â®­ã¬¥à æ¨ï
  737. edit4 edit_box 16,165,181,cl_white,0,0,0,0,1,sign_n_input,mouse_dd,ed_figure_only,1
  738. editboxes_end:
  739. ;---------------------------------------------------------------------
  740. buttons:
  741. but1 txt_button 150,5,15,65,2,0,0,but_text.1,one_shoot             ; ᤥ« âì á­¨¬®ª
  742. but2 txt_button 145,160,15,65,3,0,0,but_text.2,save_shoot          ; á®åà ­¨âì á­¨¬®ª
  743. but3 txt_button 140,115,12,120,4,0,0,but_text.3,show_scr_window    ; ¯®ª § âì á­¨¬®ª
  744. but4 txt_button 80,205,15,163,5,0,0,but_text.4,apply_number        ; ¯à¨¬¥­¨âì ­®¬¥à
  745. but5 txt_button 150,5,15,85,6,0,0,but_text.5,start_autoshoot       ; ­ ç âì  ¢â®áêñ¬ªã
  746. but6 txt_button 145,160,15,85,7,0,0,but_text.6,stop_autoshoot      ; ®áâ ­®¢¨âì  ¢â®áêñ¬ªã
  747. but7 txt_button 40,205,10,150,8,0,0,but_text.7,show_set_rect_window ; § ¤ âì ®¡« áâì
  748. buttons_end:
  749. ;---------------------------------------------------------------------
  750. check_boxes:
  751. ch1 check_box2 (5 shl 16+11),(105 shl 16 +11),5,cl_white,0,0x80000000,ch_text.1,ch_flag_en+ch_flag_bottom       ; ᢥà­ãâì ®ª­®
  752. ch2 check_box2 (5 shl 16+11),(120 shl 16 +11),5,cl_white,0,0x80000000,ch_text.2,ch_flag_en+ch_flag_bottom       ; § â¥¬ ᤥ« âì  ªâ¨¢­ë¬
  753. ch3 check_box2 (1455 shl 16+11),(105 shl 16 +11),5,cl_white,0,0x80000000,ch_text.3,ch_flag_en+ch_flag_bottom    ; ¯®ª § âì á­¨¬®ª
  754. ch4 check_box2 (5 shl 16+11),(135 shl 16 +11),5,cl_white,0,0x80000000,ch_text.4,ch_flag_en+ch_flag_bottom       ; § ¤¥à¦ª 
  755. ch5 check_box2 (5 shl 16+11),(150 shl 16 +11),5,cl_white,0,0x80000000,ch_text.5,ch_flag_en+ch_flag_bottom
  756. ch6 check_box2 (5 shl 16+11),(165 shl 16 +11),5,cl_white,0,0x80000000,ch_text.6,ch_flag_en+ch_flag_bottom
  757. use_rect check_box2 (145 shl 16+11),(150 shl 16 +11),5,cl_white,0,0x80000000,ch_text.7,ch_flag_bottom           ; ¨á¯. ®¡« áâì
  758. ;  ¢â®­ã¬¥à æ¨ï
  759. check_boxes_end:
  760. ;---------------------------------------------------------------------
  761. if lang eq ru
  762. text:
  763. .2 db '‚ëá®â  íªà ­ :',0
  764. .1 db '˜¨à¨­  íªà ­ :',0
  765. .3 db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã:',0
  766. .4 db '¨â ­  ¯¨ªá¥«ì:',0
  767. .5 db ' ©â ­  áâபã:',0
  768. .6 db '100 = 1 ᥪ㭤 ',0
  769. ;.7: db '‚¢¥¤¨â¥ ¨¬ï ä ©« :',0
  770. ;.8: db '‚¬¥áâ® "*" ¢ ¨¬¥­¨ ä ©«  ¡ã¤¥â ¢áâ ¢«ïâìáï ­®¬¥à.',0
  771. .9 db '®¬¥à ⥪ã饣® á­¨¬ª :',0
  772. .10 db 'Š®«¨ç¥á⢮ §­ ª®¢ ¢ ­®¬¥à¥:',0
  773.  
  774. but_text:
  775. .1 db '‘¤¥« âì á­¨¬®ª íªà ­ ',0
  776. .2 db '‘®åà ­¨âì á­¨¬®ª íªà ­ ',0
  777. .3 db '®ª § âì á­¨¬®ª ᥩç á',0
  778. .4 db 'à¨¬¥­¨âì',0
  779. .5 db ' ç âì  ¢â®áꥬªã',0
  780. .6 db 'Žáâ ­®¢¨âì  ¢â®áꥬªã',0
  781. .7 db '§ ¤ âì',0
  782.  
  783. ch_text:
  784. .1 db '‘¢¥à­ãâì ®ª­®',0
  785. .2 db '®ª § âì á­¨¬®ª',0
  786. .3 db '§ â¥¬ ᤥ« âì  ªâ¨¢­ë¬',0
  787. .4 db '‡ ¤¥à¦ª :',0
  788. .5 db '€¢â®á®åà ­¥­¨¥',0
  789. .6 db '€¢â®­ã¬¥à æ¨ï, ­ ç¨­ ï á',0
  790. .7 db 'Ž¡« áâì',0
  791.  
  792. no_shoot db '‘­¨¬®ª ­¥ ᤥ« ­',0
  793. shooting db '”®â®£à ä¨à®¢ ­¨¥...',0
  794. shooted_ok db '‘­¨¬®ª ᤥ« ­',0
  795. saving db '‘®åà ­¥­¨¥...',0
  796. saved_ok db '‘­¨¬®ª á®åà ­¥­',0
  797. delay_now db '‡ ¤¥à¦ª ...',0
  798. bad_file_name db 'ˆ¬ï ä ©«  ¢¢¥¤¥­® ­¥¢¥à­®',0
  799. disk_filled db '„¨áª § ¯®«­¥­',0
  800. bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0
  801. ac_den db '„®áâ㯠§ ¯à¥é¥­',0
  802. device_er db 'Žè¨¡ª  ãáâனá⢠',0
  803. not_shooted db '‘¤¥« ©â¥ á­¨¬®ª !!!',0
  804. no_file_name db '‚¢¥¤¨â¥ ¨¬ï ä ©«  !!!',0
  805. invalid_rect db '¥¤®¯ãáâ¨¬ë¥ à §¬¥àë ®¡« áâ¨',0
  806.  
  807. else
  808. text:
  809. .2 db 'Screen width:',0
  810. .1 db 'Screen height:',0
  811. .3 db 'Enter full path to the file:',0
  812. .4 db 'Bits per pixel:',0
  813. .5 db 'Bytes per line:',0
  814. .6 db '100 = 1 second',0
  815. ;.7: db 'Enter name of file:',0
  816. ;.8: db 'Instead of "*" in filename the number will be included.',0
  817. .9 db 'Current photo number:',0
  818. .10 db 'Amount of digits in number:',0
  819.  
  820. but_text:
  821. .1 db 'Make screen photo',0
  822. .2 db 'Save screen photo',0
  823. .3 db 'Show photo now',0
  824. .4 db 'Apply',0
  825. .5 db 'Start autoshooting',0
  826. .6 db 'Stop autoshooting',0
  827. .7 db 'Set',0
  828.  
  829. ch_text:
  830. .1 db 'Minimize window',0
  831. .2 db 'Show photo',0
  832. .3 db 'then make active',0
  833. .4 db 'Delay:',0
  834. .5 db 'Autosave',0
  835. .6 db 'Start numeration from',0
  836. .7 db 'Area',0
  837.  
  838. no_shoot db 'There is no photo',0
  839. shooting db 'Photographing...',0
  840. shooted_ok db 'Photo created',0
  841. saving db 'Saving...',0
  842. saved_ok db 'Photo saved',0
  843. delay_now db 'Delay...',0
  844. bad_file_name db 'File name is wrong',0
  845. disk_filled db 'Disk is full',0
  846. bad_fat_table db 'FAT table destroyed',0
  847. ac_den db 'Access denied',0
  848. device_er db 'Device error',0
  849. not_shooted db 'Make a photo !!!',0
  850. no_file_name db 'Enter file name !!!',0
  851. invalid_rect db 'Wrong area size',0
  852.  
  853. end if
  854.  
  855. ;---------------------------------------------------------------------
  856. PathShow_data_1:
  857. .type                   dd 0    ;+0
  858. .start_y                dw 38   ;+4
  859. .start_x                dw 6    ;+6
  860. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  861. .area_size_x            dw 300  ;+10
  862. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  863. .background_flag        dd 0    ;+16
  864. .font_color             dd 0x0  ;+20
  865. .background_color       dd 0x0  ;+24
  866. .text_pointer           dd fname_buf    ;+28
  867. .work_area_pointer      dd text_work_area       ;+32
  868. .temp_text_length       dd 0    ;+36
  869. ;---------------------------------------------------------------------
  870. OpenDialog_data:
  871. .type                   dd 1    ; Save
  872. .procinfo               dd procinfo     ;+4
  873. .com_area_name          dd communication_area_name      ;+8
  874. .com_area               dd 0    ;+12
  875. .opendir_pach           dd temp_dir_pach        ;+16
  876. .dir_default_pach       dd communication_area_default_pach      ;+20
  877. .start_path             dd open_dialog_path     ;+24
  878. .draw_window            dd draw_window  ;+28
  879. .status                 dd 0    ;+32
  880. .openfile_pach          dd fname_buf    ;+36
  881. .filename_area          dd filename_area        ;+40
  882. .filter_area            dd Filter
  883. .x:
  884. .x_size                 dw 420 ;+48 ; Window X size
  885. .x_start                dw 10 ;+50 ; Window X position
  886. .y:
  887. .y_size                 dw 320 ;+52 ; Window y size
  888. .y_start                dw 10 ;+54 ; Window Y position
  889.  
  890. communication_area_name:
  891.         db 'FFFFFFFF_open_dialog',0
  892. open_dialog_path:
  893.         db '/sys/File Managers/opendial',0
  894. communication_area_default_pach:
  895.         db '/sys',0
  896.  
  897. Filter:
  898. dd      Filter.end - Filter
  899. .1:
  900. db      'BMP',0
  901. .end:
  902. db      0
  903.  
  904. start_temp_file_name:   db '1.bmp',0
  905.  
  906. ;---------------------------------------------------------------------
  907. sign_n_input:
  908.         db      '2',0
  909.  
  910. PrintScreen     db  0
  911. autoshoot_flag  db  0
  912.        
  913. app_ipc ipc_buffer 32
  914. align 4
  915.  
  916. mouse_flag: dd 0x0
  917. ;---------------------------------------------------------------------
  918. align 4
  919.  
  920. ed_buffer:
  921. .1: db '/sys/1.bmp',0
  922. ;rb 287
  923. .2:
  924.         db '100',0
  925.         rb 6
  926. .3:
  927.         rb 10
  928. ;--------------------------------------------------------------------- 
  929. IM_END:
  930. ;---------------------------------------------------------------------
  931. structure_of_potock:
  932. rb 100
  933. ;---------------------------------------------------------------------
  934. align 4
  935.  
  936. cur_number        dd      ?
  937.  
  938. sign_n        db      ?
  939.  
  940. slot_n        dd ?
  941.  
  942. flags        dd ?
  943.  
  944. scr_buf:
  945. .ptr        dd      ?
  946. .end_ptr        dd      ?
  947. .size:
  948. .height        dw      ?
  949. .width        dw      ?
  950.  
  951. fs_struc:
  952. .funk_n        dd      ?
  953.         dd      ?
  954.         dd      ?
  955. .bytes_to_write  dd      ?
  956. .data_ptr        dd    ?,?
  957. .fn_ptr        dd      ?
  958.  
  959. sf_buf:
  960. .bmp_header   dd      ?
  961. .bmp_area     dd      ?
  962. .end          dd      ?
  963.  
  964. set_rect_window_pid dd ?
  965. set_rect_window_slot dd ?
  966. ;---------------------------------------------------------------------
  967. align 4
  968. rect_input_buffer:
  969. .left rb 6
  970. .top  rb 6
  971. .width  rb 6
  972. .height rb 6
  973.  
  974. cmdstr rb 257
  975. ;---------------------------------------------------------------------
  976. align 4
  977.  
  978. file_name:
  979.         rb      1058
  980.  
  981. scr screen_prop
  982. rect:
  983. .left dw ?
  984. .top dw ?
  985. .height dw ?
  986. .width dw ?
  987.  
  988. sc sys_color_table
  989. app procinfo        ; ¨­ä®à¬ æ¨ï ® £« ¢­®¬ ®ª­¥
  990. active_app procinfo ; ¨­ä®à¬ æ¨ï ®¡  ªâ¨¢­®¬ ®ª­¥
  991. set_rect_window_procinfo procinfo  ; ¨­ä®à¬ æ¨ï ®¡ ®ª­¥ ®¡« áâ¨
  992. ;---------------------------------------------------------------------
  993.         rb 512             ; á⥪ ¯®â®ª  ä®âª ­ìï
  994. shoot_esp:
  995. ;---------------------------------------------------------------------
  996.         rb 512     ; á⥪ ®ª­  ®¡« áâ¨
  997. set_rect_window_esp:
  998. ;---------------------------------------------------------------------
  999. ;        app_end    ; ª®­¥æ ¯à®£à ¬¬ë
  1000. mouse_dd        rd 1
  1001. ;---------------------------------------------------------------------
  1002. align 4
  1003. cur_dir_path:
  1004.         rb 4096
  1005. ;---------------------------------------------------------------------
  1006. library_path:
  1007.         rb 4096
  1008. ;---------------------------------------------------------------------
  1009. temp_dir_pach:
  1010.         rb 4096
  1011. ;---------------------------------------------------------------------
  1012. text_work_area:
  1013.         rb 1024
  1014. ;---------------------------------------------------------------------
  1015. fname_buf:
  1016.         rb 4096
  1017. ;---------------------------------------------------------------------
  1018. procinfo:
  1019.         rb 1024
  1020. ;---------------------------------------------------------------------
  1021. filename_area:
  1022.         rb 256
  1023. ;---------------------------------------------------------------------
  1024.         rb 1024
  1025. i_end_tread:
  1026. ;---------------------------------------------------------------------
  1027.         rb 1024
  1028. stacktop:
  1029. ;---------------------------------------------------------------------
  1030. i_end: