Subversion Repositories Kolibri OS

Rev

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

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