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