Subversion Repositories Kolibri OS

Rev

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

  1. ; €¢â®à ¯à®£à ¬¬ë …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32)
  2. ; „ â  ¯®á«¥¤­¥£® ¨§¬¥­¥­¨ï: 20.07.06 18:05
  3. macro draw_status text_ptr
  4. {
  5.         mov     [status.text],dword text_ptr
  6.         call    send_draw_status
  7. }
  8.  
  9.  
  10. title equ 'Maxxxx32 Screenshooter v 0.78' ; ‡ £®«®¢®ª ®ª­ 
  11. include 'lang.inc'
  12. include 'macros.inc'  ; ¢áâ ¢«ï¥¬ ¬ ªà®áë
  13.         meos_header  cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë
  14. include 'scrwin.inc'  ; ¢áâ ¢«ï¥¬ ª®¤ ®ª­  ¯à¤¯à®á¬®âà 
  15. include 'scrsavef.inc'; ¢áâ ¢«ï¥¬ ¯à®æ¥¤ãàã á®åà ­¥­¨ï ä ©« 
  16.         use_edit_box   ; \
  17.         use_txt_button ;  |
  18.         use_label      ;  |
  19.         use_gp         ;  |-- GUI ª®¬¯®­¥­âë ¨ ­¥ª®â®àë¥ ¯à®æ¥¤ãàë
  20.         use_check_box  ;  |
  21.         use_text_work  ; /
  22. ;--- ­ ç «® ¯à®£à ¬¬ë ---
  23.         app_start
  24.                     ; ãáâ ­ ¢«¨¢ ¥¬ ipc ¡ãää¥à
  25.         push    60
  26.         pop     eax
  27.         ;mov     ebx,1
  28.         xor     ebx,ebx
  29.         inc     ebx
  30.         mov     ecx,app_ipc
  31.         mov     edx,32
  32.         int     0x40
  33.  
  34.         push    66   ; ãáâ ­ ¢«¨¢ ¥¬ £«®¡ «ì­ãî £®àïçãî ª« ¢¨èã
  35.         pop     eax
  36.         push    eax
  37.         mov     ebx,4
  38.         mov     cl,55    ; 55 - PrintScrn
  39.         xor     edx,edx
  40.         int     0x40
  41.  
  42.         mov     ebx,app
  43.         call    get_slot_n
  44.         mov     [slot_n],ecx
  45.  
  46.         ; ãáâ ­ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
  47.         set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse+evm_ipc)
  48.  
  49. ; á ¯à룠¥¬ ¯à¨ ª ¦¤®© ¯¥à¥à¨á®¢ª¥
  50. red:
  51.         get_procinfo app   ; ¯®«ãç ¥¬ ¨­ä®à¬ æ¨î ® ¯à®æ¥áá¥
  52.         get_sys_colors sc  ; ¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
  53.  
  54.         ; ãáâ ­ ¢«¨¢ ¥¬ á¨á⥬­ë¥ æ¢¥â  ã GUI ª®¬¯®­¥­â®¢
  55.         txt_but_set_sys_color buttons,buttons_end,sc             ; \
  56.         labels_set_sys_color labels,labels_end,sc                ; |
  57.         check_boxes_set_sys_color check_boxes,check_boxes_end,sc ; |
  58.         edit_boxes_set_sys_color editboxes,editboxes_end,sc      ; /
  59.  
  60.         get_screen_prop scr ; ¯®«ãç ¥¬ ¨­ä®à¬ æ¨î ®¡ íªà ­¥
  61.         call    draw_window ; ¯¥à¥à¨á®¢ë¢ ¥¬ ®ª­®
  62. still:
  63.         wait_event red,key,button,mouse,ipc,still ; ¦¤¥¬ ᮡë⨩
  64.  
  65. key:
  66.         get_key
  67.         cmp     al,2
  68.         jne     @f
  69.         cmp     ah,55
  70.         jne     @f
  71.         call    shoot
  72.         jmp     still
  73. @@:
  74.         key_edit_boxes editboxes,editboxes_end
  75.         jmp     still
  76. button:
  77.         get_pressed_button
  78.         cmp     ah,1
  79.         je      p_close
  80.         txt_but_ev buttons,buttons_end
  81.         jmp     still
  82. mouse:
  83.         get_active_window
  84.         cmp     eax,[slot_n]
  85.         jne     still
  86.         mouse_check_boxes check_boxes,check_boxes_end
  87.         mouse_edit_boxes editboxes,editboxes_end
  88.         jmp     still
  89. ipc:
  90.         cmp     word [app_ipc+8],2
  91.         jne     @f
  92.         min_window
  93.         jmp     .clear_ipc
  94. @@:
  95.  
  96.         call    draw_number
  97.         call    dr_st
  98.  
  99. .clear_ipc:
  100.         cld
  101.         xor     eax,eax
  102.         movr     ecx,32
  103.         mov     edi,app_ipc
  104.         rep     stosb
  105.         jmp     still
  106.  
  107. p_close:
  108.         btr     dword [flags],1
  109. close:
  110.         app_close
  111.  
  112. ;--------------------------------------------------------------------
  113. ;--- ¯à®®æ¥¤ãà  ¯¥à¥à¨á®¢ª¨ £« ¢­®£® ®ª­  ---------------------------
  114. ;--------------------------------------------------------------------
  115. draw_window:
  116. start_draw_window        ; ­ ç «® ¯¥à¥à¨á®¢ª¨
  117.         xor     eax,eax                ; ®¯à¥¤¥«ï¥¬ ®ª­®
  118.         mov     ebx,100*65536+320
  119.         mov     ecx,100*65536+240
  120.         mov     edx,[sc.work]
  121.         add     edx,0x03000000
  122.         xor     esi,esi
  123.         xor     edi,edi
  124.         int     0x40
  125.  
  126.         get_scin_height  ; ¯®«ãç ¥¬ ¢ëá®âã § £®«®¢ª  ®ª­  ¨ à áç¨â뢠¥¬
  127.         sub     ax,4     ; ¯®«®¦¥­¨¥ ⥪áâ  § £®«®¢ª 
  128.         shr     ax,1
  129.         mov     bx,10
  130.         shl     ebx,16
  131.         mov     bx,ax
  132.  
  133.         mov     eax,4             ; à¨á㥬 ⥪áâ § £®®«®¢ª 
  134.         mov     ecx,[sc.grab_text]
  135.         bts     ecx,28
  136.         mov     edx,grab_text
  137.         mov     esi,grab_text_end-grab_text
  138.         int     0x40
  139.  
  140.         movr     eax,47             ; ¢ë¢®¤¨¬ ç¨á«  ¢ ®ª­®
  141.         mov     bx,4
  142.         shl     ebx,16
  143.         movsx   ecx,word [scr.width] ; è¨à¨­  íªà ­ 
  144.         mov     dx,95
  145.         shl     edx,16
  146.         mov     dx,[label1.top]
  147.         push    dx
  148.         mov     esi,[sc.work_text]
  149.         int     0x40
  150.         movsx   ecx,word [scr.height]   ; ¢ëá®â  íªà ­ 
  151.         mov     dx,[label2.top]
  152.         int     0x40
  153.         mov     bx,2
  154.         shl     ebx,16
  155.         movsx   ecx,word [scr.bitspp]   ; ¡¨â ­  ¯¨ªá¥«ì
  156.         mov     dx,240
  157.         shl     edx,16
  158.         pop     dx
  159.         int     0x40
  160.         mov     bx,6
  161.         shl     ebx,16
  162.         mov     ecx,[scr.bytesps]       ; ¡ ©â ­  áâபã
  163.         mov     dx,[label2.top]
  164.         int     0x40
  165.  
  166.         call    draw_number      ; ¯à®à¨á®¢ë¢ ¥¬ ­®¬¥à á­¨¬ª 
  167.         call    dr_st
  168.  
  169.         draw_labels labels,labels_end            ; ¬¥âª¨
  170.         draw_edit_boxes editboxes,editboxes_end  ; edit_box
  171.         draw_txt_buttons buttons,buttons_end     ; ª­®¯ª¨
  172.         draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨
  173. stop_draw_window      ; ª®­¥æ ¯¥à¥à¨á®¢ª¨
  174. ret
  175.  
  176. shoot:
  177.         bt      dword [ch4.flags],1   ; ¢ª«î祭  «¨ § ¤¥à¦ª  ?
  178.         jnc     @f
  179.         draw_status delay_now
  180.         mov     edi,ed_buffer.2
  181.         call    zstr_to_int
  182.         mov     ebx,eax
  183.         delay
  184. @@:
  185.         call    get_mem_for_shoot; ¯®«ãç ¥¬ ¯ ¬ïâì ¤«ï á­¨¬ª 
  186.  
  187.  
  188.         bts     dword [flags],0       ; ­ã«¥¢®© ä« £ - á­¨¬®ª ¥áâì ¢ ¯ ¬ïâ¨
  189.  
  190.         ; ¤¥« ¥¬ á­¨¬®ª
  191.         draw_status shooting
  192.         mov     esi,scr
  193.         mov     edi,[scr_buf.ptr]
  194.         call    copy_screen_to_image
  195.  
  196.         push    dword [scr]
  197.         pop     dword [scr_buf.size]
  198.  
  199.         bt      dword [ch5.flags],1  ; ¢ª«î祭® «¨  ¢â®á®åà ­¥­¨¥ ?
  200.         jnc     @f
  201.         call    save_file
  202. @@:
  203.         draw_status     shooted_ok
  204.  
  205.         bt      dword [flags],1
  206.         jnc     @f
  207.         ret
  208. @@:
  209.  
  210.         bt      dword [ch2.flags],1  ; ¯®ª § âì ®ª­® ¯à¥¤¯à®á¬®âà  ?
  211.         jnc     @f
  212.         call    show_scr_window
  213. @@:
  214.         bt      word [ch3.flags],1   ; ¢®ááâ ­®¢¨âì ®ª­® ?
  215.         jnc     @f
  216.  
  217.         delay 100
  218.         mov     ecx,[slot_n]
  219.         activ_window
  220. @@:
  221. ret
  222.  
  223. get_mem_for_shoot:
  224.         mov     [scr_buf.ptr],dword __app_end
  225.         movsx   ecx, word [scr.width]
  226.         movsx   ebx, word [scr.height]
  227.         imul    ecx,ebx
  228.         lea     ecx,[ecx*3]
  229.         add     ecx,__app_end
  230.         mov     [scr_buf.end_ptr],ecx
  231.         xor     ebx,ebx
  232.         inc     ebx
  233.         mov     eax,64
  234.         int     0x40
  235. ret
  236.  
  237. ;--- ᮤ âì ®ª­® ¯à®¥¤¯à®á¬®âà  ---
  238. show_scr_window:
  239. pusha
  240.         bt      dword [flags],0
  241.         jnc     @f
  242.         mov     eax,51
  243.         xor     ebx,ebx
  244.         inc     ebx
  245.         movr     ecx,scr_window
  246.         mov     edx,__app_end-1000
  247.         int     0x40
  248. @@:
  249. popa
  250. ret
  251.  
  252. ;--- ¯à®ç¨â âì ¨ ­ à¨á®¢ âì ⥪ã騩 ­®¬¥à ---
  253. apply_number:
  254.         mov     edi,ed_buffer.3
  255.         call    zstr_to_int
  256.         mov     [cur_number],eax
  257.         call    draw_number
  258. ret
  259.  
  260. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪ã饣® ­®¬¥à  ---
  261. draw_number:
  262.         mov     edi,sign_n_input
  263.         call    zstr_to_int
  264.         mov     [sign_n],al
  265.         movr     eax,13
  266.         mov     ebx,140*65536+96
  267.         mov     cx,[label9.top]
  268.         shl     ecx,16
  269.         mov     cx,10
  270.         mov     edx,[sc.work]
  271.         int     0x40
  272.         movr     eax,47
  273.         movsx   bx,byte [sign_n]
  274.         shl     ebx,16
  275.         mov     ecx,[cur_number]
  276.         mov     dx,140
  277.         shl     edx,16
  278.         mov     dx,[label9.top]
  279.         mov     esi,[sc.work_text]
  280.         int     0x40
  281. ret
  282.  
  283. ;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª  ¢â®áꥬª¨ ---
  284. start_autoshoot:
  285.         bts     dword [flags],1
  286.         jc      @f
  287.         movr     eax,51
  288.         ;mov     ebx,1
  289.         xor     ebx,ebx
  290.         inc     ebx
  291.         mov     ecx,autoshoot
  292.         mov     edx,__app_end-512
  293.         int     0x40
  294. @@:
  295. ret
  296.  
  297. ;--- ®áâ ­ ¢«¨¢ ¥â íâ®â ¯®â®ª ---
  298. stop_autoshoot:
  299.         btr     dword [flags],1
  300. ret
  301.  
  302. ;--- 横« ¯®â®ª   ¢â®áꥬª¨ ---
  303. autoshoot:
  304.         mov     ecx,[slot_n]
  305.         activ_window
  306. .next:
  307.         bt      dword [flags],1
  308.         jnc     close
  309.         movr     eax,60
  310.         movr     ebx,2
  311.         mov     ecx,[app.pid]
  312.         mov     edx,messages.draw_number
  313.         mov     esi,2
  314.         int     0x40
  315.         call    shoot
  316.         jmp     autoshoot.next
  317.  
  318. ;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ áâப¨ á®áâ®ï­¨ï ---
  319. ; (¤®«¦­  ¢ë§ë¢ âìáï ¯®â®ª®¬ £« ¢­®£® ®ª­ )
  320. dr_st:
  321.         movr     eax,38              ; ®â१®ª
  322.         mov     ebx,5*65536+315
  323.         mov     ecx,222*65536+222
  324.         mov     edx,[sc.work_graph]
  325.         int     0x40
  326.  
  327.         movr     eax,13              ; ¯®«®áª 
  328.         mov     bx,310
  329.         mov     ecx,223*65536+12
  330.         mov     edx,[sc.work]
  331.         int     0x40
  332.  
  333.         mov     edi,status
  334.         call    draw_label
  335. ret
  336.  
  337. ;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ­®¬¥à  á«®â  ¯®â®ª  ---
  338. ; ¢å®¤ ebx - ¡ãää¥à 1024 ¡ ©â
  339. ; ¢ë室 ecx - ­®¬¥à á«®â 
  340. get_slot_n:
  341.         movr     eax,9
  342.         xor     ecx,ecx
  343.         dec     ecx
  344.         int     0x40
  345.  
  346.         mov     edx,[app.pid]
  347.         xor     ecx,ecx
  348. @@:
  349.         movr     eax,9
  350.         inc     ecx
  351.         int     0x40
  352.         cmp     [app.pid],edx
  353.         je      @f
  354.         jmp     @b
  355. @@:
  356. ret
  357.  
  358. one_shoot:
  359.         mov     ecx,one_shoot_thread
  360.         mov     edx,shoot_esp
  361.         jmp     @f
  362. save_shoot:
  363.         mov     ecx,save_shoot_thread
  364.         mov     edx,shoot_esp
  365. @@:
  366.         bts     dword [flags],2
  367.         jc      .running
  368.         bt      dword [flags],1
  369.         jc      .running
  370.  
  371.         movr     eax,51
  372.         ;mov     ebx,1
  373.         xor     ebx,ebx
  374.         inc     ebx
  375.         int     0x40
  376. .running:
  377. ret
  378.  
  379. one_shoot_thread:
  380.         mov     ecx,[slot_n]
  381.         activ_window
  382.         bt      dword [ch1.flags],1   ; ¬¨­¨¬¨§¨à®¢ âì ®ª­® ?
  383.         jnc      @f
  384.         movr     eax,60
  385.         movr     ebx,2
  386.         mov     ecx,[app.pid]
  387.         mov     edx,messages.min_window
  388.         mov     esi,2
  389.         int     0x40
  390. @@:
  391.         call    shoot
  392.         btr     dword [flags],2
  393.         jmp     close
  394.  
  395. send_draw_status:
  396.         movr     eax,60
  397.         movr     ebx,2
  398.         mov     ecx,[app.pid]
  399.         mov     edx,messages.draw_status
  400.         mov     esi,2
  401.         int     0x40
  402. ret
  403.  
  404. save_shoot_thread:
  405.         mov     ecx,[slot_n]
  406.         activ_window
  407.         call    save_file
  408.         btr     dword [flags],2
  409.         jmp     close
  410.  
  411. ;====================================================================
  412. ;=== ¤ ­­ë¥ ¯à®£à ¬¬ë ===============================================
  413. ;====================================================================
  414. messages:
  415. .draw_number dw 0
  416. .draw_status dw 1
  417. .min_window  dw 2
  418.  
  419.  
  420. grab_text:
  421.         db      title
  422. grab_text_end:
  423. labels:
  424. label1 label 10,30,0,text.1   ; ¢ëá®â  íªà ­ 
  425. label2 label 10,40,0,text.2   ; è¨à¨­  íªà ­ 
  426. label3 label 10,50,0,text.3   ; ¢¢¥¤¨â¥ ¨¬ï ä ©« 
  427. label4 label 150,30,0,text.4  ; ¡¨â ­  ¯¨ªá¥«ì
  428. label5 label 150,40,0,text.5  ; ¡ ©â ­  áâபã
  429. label6 label 120,163,0,text.6
  430. ;label7 label 10,190,0,text.7
  431. ;label8 label 10,225,0,text.8
  432. label9 label 10,78,0,text.9   ; ⥪ã騩
  433. label10 label 10,210,0,text.10
  434. status label 10,226,0,no_shoot
  435. labels_end:
  436.  
  437. editboxes:
  438. edit1 edit_box 300,10,60,cl_white,0,0,0,1024,ed_buffer.1,ed_focus
  439. edit2 edit_box 35,80,159,cl_white,0,0,0,9,ed_buffer.2,ed_figure_only
  440. edit3 edit_box 35,170,189,cl_white,0,0,0,9,ed_buffer.3,ed_figure_only
  441. edit4 edit_box 16,170,206,cl_white,0,0,0,1,sign_n_input,ed_figure_only,1
  442. editboxes_end:
  443.  
  444. buttons:
  445. but1 txt_button 150,10,15,90,2,0,0,but_text.1,one_shoot
  446. but2 txt_button 145,165,15,90,3,0,0,but_text.2,save_shoot
  447. but3 txt_button 140,120,12,145,4,0,0,but_text.3,show_scr_window
  448. but4 txt_button 80,210,15,188,5,0,0,but_text.4,apply_number
  449. but5 txt_button 150,10,15,110,6,0,0,but_text.5,start_autoshoot
  450. but6 txt_button 145,165,15,110,7,0,0,but_text.6,stop_autoshoot
  451. buttons_end:
  452.  
  453. check_boxes:
  454. ch1 check_box 10,130,cl_white,0,0,ch_text.1,(ch_text.2-ch_text.1)
  455. ch2 check_box 10,145,cl_white,0,0,ch_text.2,(ch_text.3-ch_text.2)
  456. ch3 check_box 150,130,cl_white,0,0,ch_text.3,(ch_text.4-ch_text.3)
  457. ch4 check_box 10,160,cl_white,0,0,ch_text.4,(ch_text.5-ch_text.4)
  458. ch5 check_box 10,175,cl_white,0,0,ch_text.5,(ch_text.6-ch_text.5)
  459. ch6 check_box 10,190,cl_white,0,0,ch_text.6,(ch_text.7-ch_text.6)
  460. ;  ¢â®­ã¬¥à æ¨ï
  461. check_boxes_end:
  462.  
  463. if lang eq ru
  464. text:
  465. .2: db '‚ëá®â  íªà ­ :',0
  466. .1: db '˜¨à¨­  íªà ­ :',0
  467. .3: db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã:',0
  468. .4: db '¨â ­  ¯¨ªá¥«ì:',0
  469. .5: db ' ©â ­  áâபã:',0
  470. .6: db '100 = 1 ᥪ㭤 ',0
  471. ;.7: db '‚¢¥¤¨â¥ ¨¬ï ä ©« :',0
  472. ;.8: db '‚¬¥áâ® "*" ¢ ¨¬¥­¨ ä ©«  ¡ã¤¥â ¢áâ ¢«ïâìáï ­®¬¥à.',0
  473. .9: db '’¥ªã騩 ­®¬¥à á­¨¬ª :',0
  474. .10: db 'Š®«¨ç¥á⢮ §­ ª®¢ ¢ ­®¬¥à¥:',0
  475.  
  476. but_text:
  477. .1: db '‘¤¥« âì á­¨¬®ª íªà ­ ',0
  478. .2: db '‘®åà ­¨âì á­¨¬®ª íªà ­ ',0
  479. .3: db '®ª § âì á­¨¬®ª ᥩç á',0
  480. .4: db 'à¨¬¥­¨âì',0
  481. .5: db ' ç âì  ¢â®áꥬªã',0
  482. .6: db 'Žáâ ­®¢¨âì  ¢â®áꥬªã',0
  483.  
  484. ch_text:
  485. .1 db '‘¢¥à­ãâì ®ª­®';,0
  486. .2 db '®ª § âì á­¨¬®ª';,0
  487. .3 db '§ â¥¬ ᤥ« âì  ªâ¨¢­ë¬';,0
  488. .4: db '‡ ¤¥à¦ª :';,0
  489. .5: db '€¢â®á®åà ­¥­¨¥';,0
  490. .6: db '€¢â®­ã¬¥à æ¨ï, ­ ç¨­ ï á';,0
  491. .7:
  492.  
  493. no_shoot db '‘­¨¬®ª ­¥ ᤥ« ­',0
  494. shooting db '”®â®£à ä¨à®¢ ­¨¥...',0
  495. shooted_ok db '‘­¨¬®ª ᤥ« ­',0
  496. saving db '‘®åà ­¥­¨¥...',0
  497. saved_ok db '‘­¨¬®ª á®åà ­¥­',0
  498. delay_now db '‡ ¤¥à¦ª ...',0
  499. bad_file_name db 'ˆ¬ï ä ©«  ¢¢¥¤¥­® ­¥¢¥à­®',0
  500. disk_filled db '„¨áª § ¯®«­¥­',0
  501. bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0
  502. ac_den db '„®áâ㯠§ ¯à¥é¥­',0
  503. device_er db 'Žè¨¡ª  ãáâனá⢠',0
  504. not_shooted db '‘¤¥« ©â¥ á­¨¬®ª !!!',0
  505. no_file_name db '‚¢¥¤¨â¥ ¨¬ï ä ©«  !!!',0
  506. end if
  507.  
  508. sign_n_input:
  509.         db      '2',0
  510.  
  511. app_ipc ipc_buffer 32
  512.  
  513. cur_number        dd      ?
  514.  
  515. sign_n        db      ?
  516.  
  517. slot_n        dd ?
  518.  
  519. flags        dd ?
  520.  
  521. scr_buf:
  522. .ptr        dd      ?
  523. .end_ptr        dd      ?
  524. .size:
  525. .height        dw      ?
  526. .width        dw      ?
  527.  
  528. fs_struc:
  529. .funk_n        dd      ?
  530.         dd      ?
  531.         dd      ?
  532. .bytes_to_write  dd      ?
  533. .data_ptr        dd    ?,?
  534. .fn_ptr        dd      ?
  535.  
  536. sf_buf:
  537. .bmp_header   dd      ?
  538. .bmp_area     dd      ?
  539. .end          dd      ?
  540.  
  541. cmdstr rb 257
  542.  
  543. ed_buffer:
  544. .1: rb 1025
  545. .2: rb 10
  546. .3: rb 10
  547.  
  548. file_name:
  549.         rb      1058
  550.  
  551. scr screen_prop
  552. sc sys_color_table
  553. app procinfo
  554. shoot_esp rb 512
  555.         app_end    ; ª®­¥æ ¯à®£à ¬¬ë