Subversion Repositories Kolibri OS

Rev

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