1,34 → 1,38 |
; |
; Screenshooter for Kolibri |
; |
;--------------------------------------------------------------------- |
; ¢â®à ¯à®£à ¬¬ë
¢â¨å®¢ ªá¨¬ (Maxxxx32) |
; |
; 26.11.16 - IgorA ᨬª¨ á®åà ïîâìáï ¢ ä®à¬ ⥠*.png |
; 02.11.10 - ᯮ«ì§ã¥âáï checkbox ¢¥àᨨ 2 |
; |
; version: 1.2 |
; last update: 08/09/2010 |
; written by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: select path for save with OpenDialog, |
; bag fix for threads stacks |
;--------------------------------------------------------------------- |
; 01.06.09 - ®¬¯®¥âë ¡¥àãâìáï ¨§ á¨á⥬®© ¡¨¡«¨®â¥ª¨ <Lrz> |
; ¢â®à ¯à®£à ¬¬ë
¢â¨å®¢ ªá¨¬ (Maxxxx32) |
; 24.07.2008 <Lrz> ®¡®¢«¥ editbox |
; 01.06.09 - <Lrz> ª®¬¯®¥âë ¡¥àãâìáï ¨§ á¨á⥬®© ¡¨¡«¨®â¥ª¨ |
; 24.07.08 - <Lrz> ®¡®¢«¥ editbox |
; 01.02.07 - ®¡®¢«ñ editbox |
; 31.01.07 - ¢áñ ⥯¥àì à¨áã¥âáï ®â®á¨â¥«ì® ª«¨¥â᪮© ®¡« á⨠|
; 02.11.10 - ᯮ«ì§ã¥âáï checkbox ¢¥àᨨ 2 |
|
|
format binary as "" |
|
title equ 'Screenshooter v 1.2' ; £®«®¢®ª ®ª |
include '../../develop/libraries/box_lib/load_lib.mac' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
;include '../../develop/examples/editbox/trunk/editbox.inc' |
include '../../config.inc' ;for nightbuild |
include '../../proc32.inc' |
include '../../macros.inc' |
include '../../KOSfuncs.inc' |
include '../../develop/libraries/libs-dev/libimg/libimg.inc' |
include 'txtbut.inc' |
include 'label.inc' |
include 'textwork.inc' |
include 'scrshoot.mac' |
|
;include 'macros.inc' ; ¢áâ ¢«ï¥¬ ¬ ªà®áë |
; meos_header cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë |
use32 |
org 0x0 |
db 'MENUET01' |
40,8 → 44,10 |
dd cmdstr |
dd cur_dir_path |
|
include '../../dll.inc' |
|
align 4 |
@use_library |
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
use_txt_button ; | |
use_label ; |-- GUI ª®¬¯®¥âë ¨ ¥ª®â®àë¥ ¯à®æ¥¤ãàë |
use_text_work ; / |
54,26 → 60,12 |
|
macro get_sys_colors col_buf |
{ |
;mov eax,48 |
push 48 |
pop eax |
;mov ebx,3 |
push 3 |
pop ebx |
;mov ecx,col_buf |
push col_buf |
pop ecx |
;mov edx,40 |
push 40 |
pop edx |
mcall |
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, col_buf, 40 |
} |
|
;--- ç «® ¯à®£à ¬¬ë --- |
align 4 |
start: |
;sys_load_library library_name, cur_dir_path, library_path, system_path, \ |
;err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i |
|
load_libraries l_libs_start,end_l_libs |
|
83,9 → 75,7 |
test eax,eax |
jz close |
;;;;;;;;;;;;;;;; init memory 68/11 |
mov eax,68 |
mov ebx,11 |
mcall |
mcall SF_SYS_MISC, SSF_HEAP_INIT |
test eax,eax |
jz close |
|
112,31 → 102,21 |
jnz @b |
|
;OpenDialog initialisation |
push dword OpenDialog_data |
call [OpenDialog_Init] |
stdcall [OpenDialog_Init], OpenDialog_data |
|
; prepare for PathShow |
push dword PathShow_data_1 |
call [PathShow_prepare] |
stdcall [PathShow_prepare], PathShow_data_1 |
;--------------------------------------------------------------------- |
;mov al,[gs:1280*4*1024] |
; ãáâ ¢«¨¢ ¥¬ ipc ¡ãää¥à |
push 60 |
pop eax |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mov ecx,app_ipc |
mov edx,32 |
mcall |
mcall SF_IPC,, app_ipc, 32 |
|
push 66 ; ãáâ ¢«¨¢ ¥¬ £«®¡ «ìãî £®àïçãî ª« ¢¨èã |
pop eax |
push eax |
mov ebx,4 |
; ãáâ ¢«¨¢ ¥¬ £«®¡ «ìãî £®àïçãî ª« ¢¨èã |
mov cl,55 ; 55 - PrintScrn |
xor edx,edx |
mcall |
mcall SF_KEYBOARD, SSF_SET_SYS_HOTKEY |
|
mov ebx,app |
call get_slot_n |
156,7 → 136,6 |
txt_but_set_sys_color buttons,buttons_end,sc ; \ |
labels_set_sys_color labels,labels_end,sc ; | |
check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc; | |
; check_boxes_set_sys_color check_boxes,check_boxes_end,sc ; | |
edit_boxes_set_sys_color editboxes,editboxes_end,sc ; / |
|
get_screen_prop scr ; ¯®«ãç ¥¬ ¨ä®à¬ æ¨î ®¡ íªà ¥ |
181,8 → 160,8 |
jmp close |
;------------------------------------------------------------------------------ |
draw_window_direct: |
mcall 12,1 |
mcall 14 |
mcall SF_REDRAW, SSF_BEGIN_DRAW |
mcall SF_GET_SCREEN_SIZE |
; eax = [xsize]*65536 + [ysize] |
mov ebx,eax |
shr ebx,17 |
195,13 → 174,12 |
sub ecx,50 |
shl ecx,16 |
mov cx,100 |
xor eax,eax |
xor esi,esi |
mcall ,,,0x34ffffff,,grab_text |
mcall SF_CREATE_WINDOW,,,0x34ffffff,,grab_text |
|
mcall 4,<10,30>,0x90000000,saving |
mcall SF_DRAW_TEXT, <10,30>,0x90000000,saving |
|
mcall 12,2 |
mcall SF_REDRAW, SSF_END_DRAW |
ret |
;------------------------------------------------------------------------------ |
no_boot: |
221,18 → 199,11 |
jmp still |
@@: |
; key_edit_boxes editboxes,editboxes_end |
; push dword edit1 |
; call [edit_box_key] |
; stdcall [edit_box_key], edit1 |
stdcall [edit_box_key], edit2 |
stdcall [edit_box_key], edit3 |
stdcall [edit_box_key], edit4 |
|
push dword edit2 |
call [edit_box_key] |
|
push dword edit3 |
call [edit_box_key] |
|
push dword edit4 |
call [edit_box_key] |
|
jmp still |
button: |
get_pressed_button |
245,30 → 216,12 |
cmp eax,[slot_n] |
jne still |
;---------------------------------- |
; push dword edit1 |
; call [edit_box_mouse] |
push dword edit2 |
call [edit_box_mouse] |
push dword edit3 |
call [edit_box_mouse] |
push dword edit4 |
call [edit_box_mouse] |
; stdcall [edit_box_mouse], edit1 |
stdcall [edit_box_mouse], edit2 |
stdcall [edit_box_mouse], edit3 |
stdcall [edit_box_mouse], edit4 |
;---------------------------------- |
checkboxes_mouse2 check_boxes,check_boxes_end |
; push dword ch1 |
; call [check_box_mouse] |
; push dword ch2 |
; call [check_box_mouse] |
; push dword ch3 |
; call [check_box_mouse] |
; push dword ch4 |
; call [check_box_mouse] |
; push dword ch5 |
; call [check_box_mouse] |
; push dword ch6 |
; call [check_box_mouse] |
; push dword use_rect |
; call [check_box_mouse] |
;----------------------------------- |
; mouse_check_boxes check_boxes,check_boxes_end |
; mouse_edit_boxes editboxes,editboxes_end |
301,10 → 254,7 |
|
bt dword [flags],3 |
jnc @f |
mov eax,18 |
mov ebx,eax |
mov ecx,[set_rect_window_pid] |
mcall |
mcall SF_SYSTEM, SSF_TERMINATE_THREAD_ID, [set_rect_window_pid] |
@@: |
|
close: |
313,7 → 263,7 |
;--------------------------------------------------------------------- |
draw_PathShow: |
pusha |
mcall 13,<4,302>,<35,15>,0xffffff |
mcall SF_DRAW_RECT, <4,302>, <35,15>, 0xffffff |
; draw for PathShow |
push dword PathShow_data_1 |
call [PathShow_draw] |
326,7 → 276,6 |
start_draw_window ; ç «® ¯¥à¥à¨á®¢ª¨ |
; ®¯à¥¤¥«ï¥¬ ®ª® |
get_skin_height |
mov ebx,100*65536+320 |
mov ecx,100*65536+220 |
add cx,ax |
mov edx,[sc.work] |
334,31 → 283,25 |
xor esi,esi |
;xor edi,edi |
mov edi,grab_text |
xor eax,eax |
mcall |
mcall SF_CREATE_WINDOW, 100*65536+320 |
|
mov eax,47 ; ¢ë¢®¤¨¬ ç¨á« ¢ ®ª® |
mov bx,4 |
shl ebx,16 |
; ¢ë¢®¤¨¬ ç¨á« ¢ ®ª® |
mov ebx,4 shl 16 |
movsx ecx,word [scr.width] ; è¨à¨ íªà |
mov dx,95 |
shl edx,16 |
mov edx,95 shl 16 |
mov dx,[label1.top] |
push dx |
mov esi,[sc.work_text] |
mcall |
mcall SF_DRAW_NUMBER |
movsx ecx,word [scr.height] ; ¢ëá®â íªà |
mov dx,[label2.top] |
mcall |
mov bx,2 |
shl ebx,16 |
mov ebx,2 shl 16 |
movsx ecx,word [scr.bitspp] ; ¡¨â ¯¨ªá¥«ì |
mov dx,240 |
shl edx,16 |
mov edx,240 shl 16 |
pop dx |
mcall |
mov bx,6 |
shl ebx,16 |
mov ebx,6 shl 16 |
mov ecx,[scr.bytesps] ; ¡ ©â áâபã |
mov dx,[label2.top] |
mcall |
369,14 → 312,10 |
draw_labels labels,labels_end ; ¬¥âª¨ |
; draw_edit_boxes editboxes,editboxes_end ; edit_box |
;------ show check editbox ----------- |
; push dword edit1 |
; call [edit_box_draw] |
push dword edit2 |
call [edit_box_draw] |
push dword edit3 |
call [edit_box_draw] |
push dword edit4 |
call [edit_box_draw] |
; stdcall [edit_box_draw], edit1 |
stdcall [edit_box_draw], edit2 |
stdcall [edit_box_draw], edit3 |
stdcall [edit_box_draw], edit4 |
;------ end check all editbox ------- |
|
call draw_PathShow |
384,20 → 323,6 |
draw_txt_buttons buttons,buttons_end ; ª®¯ª¨ |
; draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨ |
;------ check all checkbox --------- |
; push dword ch1 |
; call [check_box_draw] |
; push dword ch2 |
; call [check_box_draw] |
; push dword ch3 |
; call [check_box_draw] |
; push dword ch4 |
; call [check_box_draw] |
; push dword ch5 |
; call [check_box_draw] |
; push dword ch6 |
; call [check_box_draw] |
; push dword use_rect |
; call [check_box_draw] |
|
checkboxes_draw2 check_boxes,check_boxes_end |
|
461,15 → 386,13 |
|
call [OpenDialog_data.draw_window] |
; invoke OpenDialog |
push dword OpenDialog_data |
call [OpenDialog_Start] |
stdcall [OpenDialog_Start], OpenDialog_data |
cmp [OpenDialog_data.status],1 |
je .1 |
ret |
.1: |
; prepare for PathShow |
push dword PathShow_data_1 |
call [PathShow_prepare] |
stdcall [PathShow_prepare], PathShow_data_1 |
|
call [OpenDialog_data.draw_window] |
|
488,10 → 411,7 |
;--- ¯®«ãç¨âì ¯ ¬ïâì ¤«ï ᨬª --- |
get_mem_for_shoot: |
;clean memory |
mov ecx,dword [scr_buf.ptr] |
mov ebx,13 |
mov eax,68 |
mcall |
mcall SF_SYS_MISC, SSF_MEM_FREE, [scr_buf.ptr] |
|
bt dword [use_rect.flags],1 ; ä®âª âì ®¡« áâì íªà |
jc .use_area |
506,9 → 426,7 |
imul ecx,ebx |
lea ecx,[ecx*3] |
; add ecx,i_end |
mov ebx,12 |
mov eax,68 |
mcall |
mcall SF_SYS_MISC, SSF_MEM_ALLOC |
mov [scr_buf.ptr],eax |
add eax,ecx |
mov [scr_buf.end_ptr],ecx |
519,12 → 437,9 |
pusha |
bt dword [flags],0 |
jnc @f |
mov eax,51 |
xor ebx,ebx |
inc ebx |
mov ecx,scr_window |
mov edx,i_end_tread-512 |
mcall |
mcall SF_CREATE_THREAD,, scr_window, i_end_tread-512 |
@@: |
popa |
ret |
542,22 → 457,17 |
mov edi,sign_n_input |
call zstr_to_int |
mov [sign_n],al |
mov eax,13 |
mov ebx,150*65536+96 |
mov cx,[label9.top] |
shl ecx,16 |
mov cx,10 |
mov edx,[sc.work] |
mcall |
mov eax,47 |
mcall SF_DRAW_RECT, 150*65536+96 |
movsx bx,byte [sign_n] |
shl ebx,16 |
mov ecx,[cur_number] |
mov dx,150 |
shl edx,16 |
mov edx,150 shl 16 |
mov dx,[label9.top] |
mov esi,[sc.work_text] |
mcall |
mcall SF_DRAW_NUMBER,, [cur_number] |
ret |
|
;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª ¢â®áꥬª¨ --- |
564,13 → 474,9 |
start_autoshoot: |
bts dword [flags],1 |
jc @f |
mov eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mov ecx,autoshoot |
mov edx,i_end_tread |
mcall |
mcall SF_CREATE_THREAD,, autoshoot, i_end_tread |
@@: |
ret |
|
587,12 → 493,8 |
.next: |
bt dword [flags],1 |
jnc close |
mov eax,60 |
mov ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_number |
mov esi,2 |
mcall |
mcall SF_IPC, SSF_SEND_MESSAGE, [app.pid], messages.draw_number |
call shoot |
jmp autoshoot.next |
.close: |
601,17 → 503,12 |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ áâப¨ á®áâ®ï¨ï --- |
; (¤®«¦ ¢ë§ë¢ âìáï ¯®â®ª®¬ £« ¢®£® ®ª ) |
dr_st: |
mov eax,38 ; ®â१®ª |
mov ebx,0*65536+310 |
mov ecx,198*65536+198 |
mov edx,[sc.work_graph] |
mcall |
mcall SF_DRAW_LINE, 0*65536+310, 198*65536+198, [sc.work_graph] |
|
mov eax,13 ; ¯®«®áª |
mov bx,310 |
mov ecx,199*65536+15 |
mov edx,[sc.work] |
mcall |
mcall SF_DRAW_RECT ; ¯®«®áª |
|
mov edi,status |
call draw_label |
621,17 → 518,15 |
; ¢å®¤ ebx - ¡ãää¥à 1024 ¡ ©â |
; ¢ë室 ecx - ®¬¥à á«®â |
get_slot_n: |
mov eax,9 |
xor ecx,ecx |
dec ecx |
mcall |
mcall SF_THREAD_INFO |
|
mov edx,[ebx+30] |
xor ecx,ecx |
@@: |
mov eax,9 |
inc ecx |
mcall |
mcall SF_THREAD_INFO |
cmp [ebx+30],edx |
je @f |
jmp @b |
646,15 → 541,13 |
;--- ¯à®æ¥¤à , § ¯ã᪠îé ï ¯®â®ª, á®åà ïî騩 ᨬ®ª --- |
save_shoot: |
; invoke OpenDialog |
push dword OpenDialog_data |
call [OpenDialog_Start] |
stdcall [OpenDialog_Start], OpenDialog_data |
cmp [OpenDialog_data.status],1 |
je .1 |
ret |
.1: |
; prepare for PathShow |
push dword PathShow_data_1 |
call [PathShow_prepare] |
stdcall [PathShow_prepare], PathShow_data_1 |
|
call draw_PathShow |
|
666,11 → 559,9 |
bt dword [flags],1 |
jc .running |
|
mov eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mcall |
mcall SF_CREATE_THREAD |
.running: |
ret |
|
680,12 → 571,8 |
activ_window |
bt dword [ch1.flags],1 ; ¬¨¨¬¨§¨à®¢ âì ®ª® ? |
jnc @f |
mov eax,60 |
mov ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.min_window |
mov esi,2 |
mcall |
mcall SF_IPC, SSF_SEND_MESSAGE, [app.pid], messages.min_window |
@@: |
call shoot |
btr dword [flags],2 |
694,12 → 581,8 |
;--- ¯à®æ¥¤ãà , ®â¯à ¢«ïîé ï £« ¢®¬ã ®ªã á®®¡é¥¨¥ ® ¯¥à¥à¨á®¢ª¥ |
; áâப¨ á®áâ®ï¨ï --- |
send_draw_status: |
mov eax,60 |
mov ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_status |
mov esi,2 |
mcall |
mcall SF_IPC, SSF_SEND_MESSAGE, [app.pid], messages.draw_status |
ret |
|
;--- ¯®â®ª, á®åà ï ä ©« --- |
714,34 → 597,24 |
show_set_rect_window: |
bts dword [flags],3 |
jc @f |
mov eax,51 |
xor ebx,ebx |
inc ebx |
mov ecx,set_rect_window |
mov edx,set_rect_window_esp |
mcall |
mcall SF_CREATE_THREAD,, set_rect_window, set_rect_window_esp |
|
mov [set_rect_window_pid],eax |
ret |
|
@@: |
mov eax,18 |
mov ebx,eax |
mov ecx,[set_rect_window_pid] |
mcall |
mcall SF_SYSTEM, SSF_TERMINATE_THREAD_ID, [set_rect_window_pid] |
btr dword [flags],3 |
ret |
|
;--- ¯®«ã票¥ ¨ä®à¬ 樨 ®¡ ªâ¨¢®¬ ®ª¥ --- |
get_active_window_info: |
mov eax,18 |
mov ebx,7 |
mcall |
mcall SF_SYSTEM, SSF_GET_ACTIVE_WINDOW |
|
mov ecx,eax |
mov eax,9 |
mov ebx,active_app |
mcall |
mcall SF_THREAD_INFO, active_app |
ret |
|
;==================================================================== |
779,6 → 652,9 |
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \ |
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i |
|
library03 l_libs system_dir_LibImg+9, cur_dir_path, library_path, system_dir_LibImg, \ |
err_message_found_lib3, head_f_l, import_libimg, err_message_import3, head_f_i |
|
end_l_libs: |
;--------------------------------------------------------------------- |
editboxes: |
958,11 → 834,11 |
Filter: |
dd Filter.end - Filter |
.1: |
db 'BMP',0 |
db 'PNG',0 |
.end: |
db 0 |
|
start_temp_file_name: db '1.bmp',0 |
start_temp_file_name: db '1.png',0 |
|
;--------------------------------------------------------------------- |
sign_n_input: |
979,7 → 855,7 |
align 4 |
|
ed_buffer: |
.1: db '/sys/1.bmp',0 |
.1: db '/sys/1.png',0 |
;rb 287 |
.2: |
db '100',0 |
1061,28 → 937,15 |
mouse_dd rd 1 |
;--------------------------------------------------------------------- |
align 4 |
cur_dir_path: |
rb 4096 |
cur_dir_path rb 4096 |
library_path rb 4096 |
temp_dir_pach rb 4096 |
text_work_area rb 1024 |
fname_buf rb 4096 |
procinfo rb 1024 |
filename_area rb 256 |
;--------------------------------------------------------------------- |
library_path: |
rb 4096 |
;--------------------------------------------------------------------- |
temp_dir_pach: |
rb 4096 |
;--------------------------------------------------------------------- |
text_work_area: |
rb 1024 |
;--------------------------------------------------------------------- |
fname_buf: |
rb 4096 |
;--------------------------------------------------------------------- |
procinfo: |
rb 1024 |
;--------------------------------------------------------------------- |
filename_area: |
rb 256 |
;--------------------------------------------------------------------- |
rb 1024 |
i_end_tread: |
;--------------------------------------------------------------------- |
rb 1024 |