Subversion Repositories Kolibri OS

Rev

Rev 833 | Rev 1100 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1098 Lrz 1
; 01.06.09 - Компоненты беруться из системной библиотеки 
205 heavyiron 2
; Автор программы Евтихов Максим (Maxxxx32)
833 Lrz 3
; 24.07.2008  обновлен editbox
307 Lrz 4
; 01.02.07 - обновлён editbox
5
; 31.01.07 - всё теперь рисуется относительно клиентской области
205 heavyiron 6
 
1098 Lrz 7
title equ 'Screenshooter v 0.91' ; Заголовок окна
8
include '../../develop/libraries/box_lib/trunk/load_lib.mac'
9
include '../../develop/libraries/box_lib/trunk/editbox_ex.mac'
10
;include '../../develop/examples/editbox/trunk/editbox.inc'
11
include '../../macros.inc'
12
include 'scrshoot.mac'
13
include 'txtbut.inc'
14
include 'label.inc'
15
include 'textwork.inc'
205 heavyiron 16
 
1098 Lrz 17
;include 'macros.inc'  ; вставляем макросы
18
;        meos_header  cmdstr ; вставляем заголовок программы
19
use32
20
    org 0x0
21
    db 'MENUET01'
22
    dd 0x1
23
    dd start
24
    dd i_end
25
    dd i_end
26
    dd i_end
27
    dd cmdstr
28
    dd cur_dir_path
29
 
30
align 4
205 heavyiron 31
include 'scrwin.inc'  ; вставляем код окна прдпросмотра
32
include 'scrsavef.inc'; вставляем процедуру сохранения файла
1098 Lrz 33
 
34
        @use_library
833 Lrz 35
        use_txt_button                          ;  |
36
        use_label                               ;  |-- GUI компоненты и некоторые процедуры
37
        use_text_work                           ; /
307 Lrz 38
include 'gp.inc'
39
include 'srectwin.inc'
310 heavyiron 40
include 'lang.inc'
205 heavyiron 41
;--- начало программы ---
1098 Lrz 42
align 4
43
start:
44
sys_load_library  library_name, cur_dir_path, library_path, system_path, \
45
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
46
;if return code =-1 then exit, else nornary work
47
;        cmp     eax,-1
48
        inc     eax
49
        test    eax,eax
50
        jz      close
51
;;;;;;;;;;;;;;;; init memory 68/11
52
        mov     eax,68
53
        mov     ebx,11
54
        mcall
55
        test    eax,eax
56
        jz      close
57
 
833 Lrz 58
        ;mov     al,[gs:1280*4*1024]
59
                    ; устанавливаем ipc буффер
60
        push    60
61
        pop     eax
62
        ;mov     ebx,1
63
        xor     ebx,ebx
64
        inc     ebx
65
        mov     ecx,app_ipc
66
        mov     edx,32
1098 Lrz 67
        mcall
205 heavyiron 68
 
833 Lrz 69
        push    66   ; устанавливаем глобальную горячую клавишу
70
        pop     eax
71
        push    eax
72
        mov     ebx,4
73
        mov     cl,55    ; 55 - PrintScrn
74
        xor     edx,edx
1098 Lrz 75
        mcall
205 heavyiron 76
 
833 Lrz 77
        mov     ebx,app
78
        call    get_slot_n
79
        mov     [slot_n],ecx
205 heavyiron 80
 
833 Lrz 81
        ; устанавливаем маску событий
82
        set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse+evm_ipc)
205 heavyiron 83
 
84
; сюда прыгаем при каждой перерисовке
85
red:
833 Lrz 86
        get_procinfo app   ; получаем информацию о процессе
87
        get_sys_colors sc  ; получаем системные цвета
205 heavyiron 88
 
833 Lrz 89
        ; устанавливаем системные цвета у GUI компонентов
90
        txt_but_set_sys_color buttons,buttons_end,sc             ; \
91
        labels_set_sys_color labels,labels_end,sc                ; |
92
        check_boxes_set_sys_color check_boxes,check_boxes_end,sc ; |
93
        edit_boxes_set_sys_color editboxes,editboxes_end,sc      ; /
205 heavyiron 94
 
833 Lrz 95
        get_screen_prop scr ; получаем информацию об экране
96
        call    draw_window ; перерисовываем окно
205 heavyiron 97
still:
833 Lrz 98
        wait_event red,key,button,mouse,ipc,still ; ждем событий
205 heavyiron 99
 
100
key:
833 Lrz 101
        get_key
102
        cmp     al,2
103
        jne     @f
104
        cmp     ah,55
105
        jne     @f
106
        call    shoot
107
        jmp     still
205 heavyiron 108
@@:
1098 Lrz 109
;        key_edit_boxes editboxes,editboxes_end
110
        push    dword edit1
111
        call    [edit_box_key]
112
 
113
        push    dword edit2
114
        call    [edit_box_key]
115
 
116
        push    dword edit3
117
        call    [edit_box_key]
118
 
119
        push    dword edit4
120
        call    [edit_box_key]
121
 
833 Lrz 122
        jmp     still
205 heavyiron 123
button:
833 Lrz 124
        get_pressed_button
125
        cmp     ah,1
126
        je      p_close
127
        txt_but_ev buttons,buttons_end
128
        jmp     still
205 heavyiron 129
mouse:
833 Lrz 130
        get_active_window
131
        cmp     eax,[slot_n]
132
        jne     still
1098 Lrz 133
;----------------------------------
134
        push    dword edit1
135
        call    [edit_box_mouse]
136
        push    dword edit2
137
        call    [edit_box_mouse]
138
        push    dword edit3
139
        call    [edit_box_mouse]
140
        push    dword edit4
141
        call    [edit_box_mouse]
142
;----------------------------------
143
        push    dword ch1
144
        call    [check_box_mouse]
145
        push    dword ch2
146
        call    [check_box_mouse]
147
        push    dword ch3
148
        call    [check_box_mouse]
149
        push    dword ch4
150
        call    [check_box_mouse]
151
        push    dword ch5
152
        call    [check_box_mouse]
153
        push    dword ch6
154
        call    [check_box_mouse]
155
        push    dword use_rect
156
        call    [check_box_mouse]
157
;-----------------------------------
158
;        mouse_check_boxes check_boxes,check_boxes_end
159
;        mouse_edit_boxes editboxes,editboxes_end
833 Lrz 160
        jmp     still
205 heavyiron 161
ipc:
833 Lrz 162
        cmp     word [app_ipc+8],2
163
        jne     @f
164
        min_window
165
        jmp     .clear_ipc
205 heavyiron 166
@@:
167
 
833 Lrz 168
        call    draw_number
169
        call    dr_st
205 heavyiron 170
 
171
.clear_ipc:
833 Lrz 172
        cld
173
        xor     eax,eax
1098 Lrz 174
        mov     ecx,32
833 Lrz 175
        mov     edi,app_ipc
176
        rep     stosb
177
        jmp     still
205 heavyiron 178
 
179
p_close:
833 Lrz 180
        btr     dword [flags],1
307 Lrz 181
 
833 Lrz 182
        bt      dword [flags],3
183
        jnc     @f
1098 Lrz 184
        mov    eax,18
833 Lrz 185
        mov     ebx,eax
186
        mov     ecx,[set_rect_window_pid]
1098 Lrz 187
        mcall
307 Lrz 188
@@:
189
 
205 heavyiron 190
close:
833 Lrz 191
        app_close
205 heavyiron 192
 
193
;--------------------------------------------------------------------
194
;--- прооцедура перерисовки главного окна ---------------------------
195
;--------------------------------------------------------------------
196
draw_window:
833 Lrz 197
start_draw_window        ; начало перерисовки
198
        ; определяем окно
199
        get_skin_height
200
        mov     ebx,100*65536+320
201
        mov     ecx,100*65536+220
202
        add     cx,ax
203
        mov     edx,[sc.work]
1098 Lrz 204
        or      edx,0x34000000;0x33000000
833 Lrz 205
        xor     esi,esi
206
        ;xor     edi,edi
207
        mov     edi,grab_text
208
        xor     eax,eax
1098 Lrz 209
        mcall
205 heavyiron 210
 
1098 Lrz 211
        mov     eax,47             ; выводим числа в окно
833 Lrz 212
        mov     bx,4
213
        shl     ebx,16
214
        movsx   ecx,word [scr.width] ; ширина экрана
215
        mov     dx,95
216
        shl     edx,16
217
        mov     dx,[label1.top]
218
        push    dx
219
        mov     esi,[sc.work_text]
1098 Lrz 220
        mcall
833 Lrz 221
        movsx   ecx,word [scr.height]   ; высота экрана
222
        mov     dx,[label2.top]
1098 Lrz 223
        mcall
833 Lrz 224
        mov     bx,2
225
        shl     ebx,16
226
        movsx   ecx,word [scr.bitspp]   ; бит на пиксель
227
        mov     dx,240
228
        shl     edx,16
229
        pop     dx
1098 Lrz 230
        mcall
833 Lrz 231
        mov     bx,6
232
        shl     ebx,16
233
        mov     ecx,[scr.bytesps]       ; байт на строку
234
        mov     dx,[label2.top]
1098 Lrz 235
        mcall
205 heavyiron 236
 
833 Lrz 237
        call    draw_number      ; прорисовываем номер снимка
238
        call    dr_st
205 heavyiron 239
 
833 Lrz 240
        draw_labels labels,labels_end            ; метки
1098 Lrz 241
;        draw_edit_boxes editboxes,editboxes_end  ; edit_box
242
;------ show check editbox -----------
243
        push    dword edit1
244
        call    [edit_box_draw]
245
        push    dword edit2
246
        call    [edit_box_draw]
247
        push    dword edit3
248
        call    [edit_box_draw]
249
        push    dword edit4
250
        call    [edit_box_draw]
251
;------ end check all editbox -------
252
 
833 Lrz 253
        draw_txt_buttons buttons,buttons_end     ; кнопки
1098 Lrz 254
;        draw_check_boxes check_boxes,check_boxes_end ; флажки
255
;------ check all checkbox ---------
256
        push    dword ch1
257
        call    [check_box_draw]
258
        push    dword ch2
259
        call    [check_box_draw]
260
        push    dword ch3
261
        call    [check_box_draw]
262
        push    dword ch4
263
        call    [check_box_draw]
264
        push    dword ch5
265
        call    [check_box_draw]
266
        push    dword ch6
267
        call    [check_box_draw]
268
        push    dword use_rect
269
        call    [check_box_draw]
270
;------ end check all checkbox ------
271
 
205 heavyiron 272
stop_draw_window      ; конец перерисовки
273
ret
274
 
275
shoot:
833 Lrz 276
        bt      dword [ch4.flags],1   ; включена ли задержка ?
277
        jnc     @f
278
        draw_status delay_now
279
        mov     edi,ed_buffer.2
280
        call    zstr_to_int
281
        mov     ebx,eax
282
        delay
205 heavyiron 283
@@:
833 Lrz 284
        call    get_mem_for_shoot; получаем память для снимка
205 heavyiron 285
 
286
 
833 Lrz 287
        bts     dword [flags],0       ; нулевой флаг - снимок есть в памяти
205 heavyiron 288
 
833 Lrz 289
        ; делаем снимок
290
        draw_status shooting
291
        mov     esi,scr
292
        mov     edi,[scr_buf.ptr]
293
        call    copy_screen_to_image
205 heavyiron 294
 
833 Lrz 295
        bt      dword [use_rect.flags],1
296
        jc      .use_rect
297
        push    dword [scr]
298
        jmp     @f
307 Lrz 299
.use_rect:
833 Lrz 300
        push    dword [rect.height]
307 Lrz 301
@@:
833 Lrz 302
        pop     dword [scr_buf.size]
205 heavyiron 303
 
833 Lrz 304
        bt      dword [ch5.flags],1  ; включено ли автосохранение ?
305
        jnc     @f
306
        call    save_file
205 heavyiron 307
@@:
833 Lrz 308
        draw_status     shooted_ok
205 heavyiron 309
 
833 Lrz 310
        bt      dword [flags],1
311
        jnc     @f
312
        ret
205 heavyiron 313
@@:
314
 
833 Lrz 315
        bt      dword [ch2.flags],1  ; показать окно предпросмотра ?
316
        jnc     @f
317
        call    show_scr_window
205 heavyiron 318
@@:
833 Lrz 319
        bt      word [ch3.flags],1   ; восстановить окно ?
320
        jnc     @f
205 heavyiron 321
 
833 Lrz 322
        delay 100
323
        mov     ecx,[slot_n]
324
        activ_window
205 heavyiron 325
@@:
326
ret
327
 
307 Lrz 328
;--- получить память для снимка ---
205 heavyiron 329
get_mem_for_shoot:
1098 Lrz 330
;clean memory
331
        mov     ecx,dword [scr_buf.ptr]
332
        mov     ebx,13
333
        mov     eax,68
334
        mcall
335
 
833 Lrz 336
        bt      dword [use_rect.flags],1 ; фоткать область экрана
337
        jc      .use_area
338
        movzx   ecx, word [scr.width]
339
        movzx   ebx, word [scr.height]
340
        jmp     @f
307 Lrz 341
.use_area:
833 Lrz 342
        call    read_rect
343
        movzx   ecx, word [rect.width]
344
        movzx   ebx, word [rect.height]
307 Lrz 345
@@:
833 Lrz 346
        imul    ecx,ebx
347
        lea     ecx,[ecx*3]
1098 Lrz 348
;        add     ecx,i_end
349
        mov     ebx,12
350
        mov     eax,68
351
        mcall
352
        mov     [scr_buf.ptr],eax
353
        add     eax,ecx
833 Lrz 354
        mov     [scr_buf.end_ptr],ecx
205 heavyiron 355
ret
356
 
357
;--- содать окно проедпросмотра ---
358
show_scr_window:
359
pusha
833 Lrz 360
        bt      dword [flags],0
361
        jnc     @f
362
        mov     eax,51
363
        xor     ebx,ebx
364
        inc     ebx
1098 Lrz 365
        mov     ecx,scr_window
366
        mov     edx,i_end_tread-1000
367
        mcall
205 heavyiron 368
@@:
369
popa
370
ret
371
 
372
;--- прочитать и нарисовать текущий номер ---
373
apply_number:
833 Lrz 374
        mov     edi,ed_buffer.3
375
        call    zstr_to_int
376
        mov     [cur_number],eax
377
        call    draw_number
205 heavyiron 378
ret
379
 
380
;--- процедура прорисовки текущего номера ---
381
draw_number:
833 Lrz 382
        mov     edi,sign_n_input
383
        call    zstr_to_int
384
        mov     [sign_n],al
1098 Lrz 385
        mov     eax,13
833 Lrz 386
        mov     ebx,150*65536+96
387
        mov     cx,[label9.top]
388
        shl     ecx,16
389
        mov     cx,10
390
        mov     edx,[sc.work]
1098 Lrz 391
        mcall
392
        mov     eax,47
833 Lrz 393
        movsx   bx,byte [sign_n]
394
        shl     ebx,16
395
        mov     ecx,[cur_number]
396
        mov     dx,150
397
        shl     edx,16
398
        mov     dx,[label9.top]
399
        mov     esi,[sc.work_text]
1098 Lrz 400
        mcall
205 heavyiron 401
ret
402
 
403
;--- процедура, запускающая поток автосъемки ---
404
start_autoshoot:
833 Lrz 405
        bts     dword [flags],1
406
        jc      @f
1098 Lrz 407
        mov     eax,51
833 Lrz 408
        ;mov     ebx,1
409
        xor     ebx,ebx
410
        inc     ebx
411
        mov     ecx,autoshoot
1098 Lrz 412
        mov     edx,i_end_tread-512
413
        mcall
205 heavyiron 414
@@:
415
ret
416
 
417
;--- останавливает этот поток ---
418
stop_autoshoot:
833 Lrz 419
        btr     dword [flags],1
205 heavyiron 420
ret
421
 
422
;--- цикл потока автосъемки ---
423
autoshoot:
833 Lrz 424
        mov     ecx,[slot_n]
425
        activ_window
205 heavyiron 426
.next:
833 Lrz 427
        bt      dword [flags],1
428
        jnc     close
1098 Lrz 429
        mov     eax,60
430
        mov     ebx,2
833 Lrz 431
        mov     ecx,[app.pid]
432
        mov     edx,messages.draw_number
433
        mov     esi,2
1098 Lrz 434
        mcall
833 Lrz 435
        call    shoot
436
        jmp     autoshoot.next
205 heavyiron 437
 
438
;--- процедура прорисовки строки состояния ---
439
; (должна вызываться потоком главного окна)
440
dr_st:
1098 Lrz 441
        mov     eax,38              ; отрезок
833 Lrz 442
        mov     ebx,0*65536+310
443
        mov     ecx,198*65536+198
444
        mov     edx,[sc.work_graph]
1098 Lrz 445
        mcall
205 heavyiron 446
 
1098 Lrz 447
        mov     eax,13              ; полоска
833 Lrz 448
        mov     bx,310
449
        mov     ecx,199*65536+15
450
        mov     edx,[sc.work]
1098 Lrz 451
        mcall
205 heavyiron 452
 
833 Lrz 453
        mov     edi,status
454
        call    draw_label
205 heavyiron 455
ret
456
 
457
;--- процедура получения номера слота потока ---
458
; вход ebx - буффер 1024 байт
459
; выход ecx - номер слота
460
get_slot_n:
1098 Lrz 461
        mov     eax,9
833 Lrz 462
        xor     ecx,ecx
463
        dec     ecx
1098 Lrz 464
        mcall
205 heavyiron 465
 
833 Lrz 466
        mov     edx,[ebx+30]
467
        xor     ecx,ecx
205 heavyiron 468
@@:
1098 Lrz 469
        mov     eax,9
833 Lrz 470
        inc     ecx
1098 Lrz 471
        mcall
833 Lrz 472
        cmp     [ebx+30],edx
473
        je      @f
474
        jmp     @b
205 heavyiron 475
@@:
476
ret
477
 
307 Lrz 478
;--- процедура, запускающая поток, делающий 1 снимок ---
205 heavyiron 479
one_shoot:
833 Lrz 480
        mov     ecx,one_shoot_thread
481
        mov     edx,shoot_esp
482
        jmp     @f
307 Lrz 483
;--- процедра, запускающая поток, сохраняющий снимок ---
205 heavyiron 484
save_shoot:
833 Lrz 485
        mov     ecx,save_shoot_thread
486
        mov     edx,shoot_esp
205 heavyiron 487
@@:
833 Lrz 488
        bts     dword [flags],2
489
        jc      .running
490
        bt      dword [flags],1
491
        jc      .running
205 heavyiron 492
 
1098 Lrz 493
        mov     eax,51
833 Lrz 494
        ;mov     ebx,1
495
        xor     ebx,ebx
496
        inc     ebx
1098 Lrz 497
        mcall
205 heavyiron 498
.running:
499
ret
500
 
307 Lrz 501
;--- поток, делающий 1 снимок ---
205 heavyiron 502
one_shoot_thread:
833 Lrz 503
        mov     ecx,[slot_n]
504
        activ_window
505
        bt      dword [ch1.flags],1   ; минимизировать окно ?
506
        jnc      @f
1098 Lrz 507
        mov     eax,60
508
        mov     ebx,2
833 Lrz 509
        mov     ecx,[app.pid]
510
        mov     edx,messages.min_window
511
        mov     esi,2
1098 Lrz 512
        mcall
205 heavyiron 513
@@:
833 Lrz 514
        call    shoot
515
        btr     dword [flags],2
516
        jmp     close
205 heavyiron 517
 
307 Lrz 518
;--- процедура, отправляющая главному окну сообщение о перерисовке
519
; строки состояния ---
205 heavyiron 520
send_draw_status:
1098 Lrz 521
        mov     eax,60
522
        mov     ebx,2
833 Lrz 523
        mov     ecx,[app.pid]
524
        mov     edx,messages.draw_status
525
        mov     esi,2
1098 Lrz 526
        mcall
205 heavyiron 527
ret
528
 
307 Lrz 529
;--- поток, сохраняюий файл ---
205 heavyiron 530
save_shoot_thread:
833 Lrz 531
        mov     ecx,[slot_n]
532
        activ_window
533
        call    save_file
534
        btr     dword [flags],2
535
        jmp     close
205 heavyiron 536
 
307 Lrz 537
;--- процедура, запускающая поток окна установки области съемки ---
538
show_set_rect_window:
833 Lrz 539
        bts     dword [flags],3
540
        jc      @f
1098 Lrz 541
        mov     eax,51
833 Lrz 542
        xor     ebx,ebx
543
        inc     ebx
544
        mov     ecx,set_rect_window
545
        mov     edx,set_rect_window_esp
1098 Lrz 546
        mcall
307 Lrz 547
 
833 Lrz 548
        mov     [set_rect_window_pid],eax
307 Lrz 549
ret
550
 
551
@@:
1098 Lrz 552
        mov    eax,18
833 Lrz 553
        mov     ebx,eax
554
        mov     ecx,[set_rect_window_pid]
1098 Lrz 555
        mcall
833 Lrz 556
        btr     dword [flags],3
307 Lrz 557
ret
558
 
559
;--- получение информации об активном окне ---
560
get_active_window_info:
1098 Lrz 561
        mov    eax,18
562
        mov    ebx,7
563
        mcall
307 Lrz 564
 
833 Lrz 565
        mov     ecx,eax
1098 Lrz 566
        mov     eax,9
833 Lrz 567
        mov     ebx,active_app
1098 Lrz 568
        mcall
307 Lrz 569
ret
570
 
205 heavyiron 571
;====================================================================
572
;=== данные программы ===============================================
573
;====================================================================
574
messages:
575
.draw_number dw 0
576
.draw_status dw 1
577
.min_window  dw 2
578
 
579
 
580
grab_text:
833 Lrz 581
        db      title,0
307 Lrz 582
 
205 heavyiron 583
labels:
307 Lrz 584
label1 label 5,5,0,text.1   ; ширина экрана
585
label2 label 5,15,0,text.2   ; высота экрана
586
label3 label 5,25,0,text.3   ; введите имя файла
587
label4 label 150,5,0,text.4  ; бит на пиксель
588
label5 label 150,15,0,text.5  ; байт на строку
589
label6 label 115,138,0,text.6  ; 100 = 1 сек.
205 heavyiron 590
;label7 label 10,190,0,text.7
591
;label8 label 10,225,0,text.8
307 Lrz 592
label9 label 5,52,0,text.9   ; номер текущего симка
593
label10 label 5,185,0,text.10
594
status label 5,201,0,no_shoot
205 heavyiron 595
labels_end:
596
 
597
editboxes:
1098 Lrz 598
edit1 edit_box 300,5,35,cl_white,0xaabbcc,0,0,0,300,ed_buffer.1,ed_focus,10,10        ; путь к файлу
599
edit2 edit_box 35,75,134,cl_white,0xaabbcc,0,0,0,9,ed_buffer.2,ed_figure_only,3,3         ; задержка
600
edit3 edit_box 35,165,164,cl_white,0xaabbcc,0,0,0,9,ed_buffer.3,ed_figure_only    ; автонумерация
485 heavyiron 601
edit4 edit_box 16,165,181,cl_white,0xaabbcc,0,0,0,1,sign_n_input,ed_figure_only,1
205 heavyiron 602
editboxes_end:
603
 
604
buttons:
1098 Lrz 605
but1 txt_button 150,5,15,65,2,0,0,but_text.1,one_shoot             ; сделать снимок
833 Lrz 606
but2 txt_button 145,160,15,65,3,0,0,but_text.2,save_shoot          ; сохранить снимок
307 Lrz 607
but3 txt_button 140,115,12,120,4,0,0,but_text.3,show_scr_window    ; показать снимок
833 Lrz 608
but4 txt_button 80,205,15,163,5,0,0,but_text.4,apply_number        ; применить номер
1098 Lrz 609
but5 txt_button 150,5,15,85,6,0,0,but_text.5,start_autoshoot       ; начать автосъёмку
610
but6 txt_button 145,160,15,85,7,0,0,but_text.6,stop_autoshoot      ; остановить автосъёмку
307 Lrz 611
but7 txt_button 40,205,10,150,8,0,0,but_text.7,show_set_rect_window ; задать область
205 heavyiron 612
buttons_end:
613
 
614
check_boxes:
1098 Lrz 615
ch1 check_box 5,105,5,11,cl_white,0,0,ch_text.1,(ch_text.2-ch_text.1),ch_flag_en  ; свернуть окно
616
ch2 check_box 5,120,5,11,cl_white,0,0,ch_text.2,(ch_text.3-ch_text.2),ch_flag_en  ; затем сделать активным
617
ch3 check_box 145,105,5,11,cl_white,0,0,ch_text.3,(ch_text.4-ch_text.3),ch_flag_en ; показать снимок
618
ch4 check_box 5,135,5,11,cl_white,0,0,ch_text.4,(ch_text.5-ch_text.4),ch_flag_en   ; задержка
619
ch5 check_box 5,150,5,11,cl_white,0,0,ch_text.5,(ch_text.6-ch_text.5)
620
ch6 check_box 5,165,5,11,cl_white,0,0,ch_text.6,(ch_text.7-ch_text.6),ch_flag_en
621
use_rect check_box 145,150,5,11,cl_white,0,0,ch_text.7,(ch_text.8-ch_text.7) ; исп. область
205 heavyiron 622
; автонумерация
623
check_boxes_end:
624
 
625
if lang eq ru
626
text:
307 Lrz 627
.2 db 'Высота экрана:',0
628
.1 db 'Ширина экрана:',0
629
.3 db 'Введите полный путь к файлу:',0
630
.4 db 'Бит на пиксель:',0
631
.5 db 'Байт на строку:',0
632
.6 db '100 = 1 секунда',0
205 heavyiron 633
;.7: db 'Введите имя файла:',0
634
;.8: db 'Вместо "*" в имени файла будет вставляться номер.',0
307 Lrz 635
.9 db 'Номер текущего снимка:',0
636
.10 db 'Количество знаков в номере:',0
205 heavyiron 637
 
638
but_text:
307 Lrz 639
.1 db 'Сделать снимок экрана',0
640
.2 db 'Сохранить снимок экрана',0
641
.3 db 'Показать снимок сейчас',0
642
.4 db 'Применить',0
643
.5 db 'Начать автосъемку',0
644
.6 db 'Остановить автосъемку',0
645
.7 db 'задать',0
205 heavyiron 646
 
647
ch_text:
648
.1 db 'Свернуть окно';,0
649
.2 db 'Показать снимок';,0
650
.3 db 'затем сделать активным';,0
307 Lrz 651
.4 db 'Задержка:';,0
652
.5 db 'Автосохранение';,0
653
.6 db 'Автонумерация, начиная с';,0
654
.7 db 'Область'
655
.8:
205 heavyiron 656
 
657
no_shoot db 'Снимок не сделан',0
658
shooting db 'Фотографирование...',0
659
shooted_ok db 'Снимок сделан',0
660
saving db 'Сохранение...',0
661
saved_ok db 'Снимок сохранен',0
662
delay_now db 'Задержка...',0
663
bad_file_name db 'Имя файла введено неверно',0
664
disk_filled db 'Диск заполнен',0
665
bad_fat_table db 'Таблица FAT разрушена',0
666
ac_den db 'Доступ запрещен',0
667
device_er db 'Ошибка устройства',0
668
not_shooted db 'Сделайте снимок !!!',0
669
no_file_name db 'Введите имя файла !!!',0
307 Lrz 670
invalid_rect db 'Недопустимые размеры области',0
310 heavyiron 671
 
672
else
673
text:
674
.2 db 'Screen width:',0
675
.1 db 'Screen height:',0
676
.3 db 'Enter full path to the file:',0
677
.4 db 'Bits per pixel:',0
678
.5 db 'Bytes per line:',0
679
.6 db '100 = 1 second',0
680
;.7: db 'Enter name of file:',0
681
;.8: db 'Instead of "*" in filename the number will be included.',0
682
.9 db 'Current photo number:',0
683
.10 db 'Amount of digits in number:',0
684
 
685
but_text:
686
.1 db 'Make screen photo',0
687
.2 db 'Save screen photo',0
688
.3 db 'Show photo now',0
689
.4 db 'Apply',0
690
.5 db 'Start autoshooting',0
691
.6 db 'Stop autoshooting',0
692
.7 db 'Set',0
693
 
694
ch_text:
695
.1 db 'Minimize window';,0
696
.2 db 'Show photo';,0
697
.3 db 'then make active';,0
698
.4 db 'Delay:';,0
699
.5 db 'Autosave';,0
700
.6 db 'Start numeration from';,0
701
.7 db 'Area'
702
.8:
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
1098 Lrz 715
not_shooted db 'Make a photo !!!',0
310 heavyiron 716
no_file_name db 'Enter file name !!!',0
717
invalid_rect db 'Wrong area size',0
718
 
205 heavyiron 719
end if
720
 
721
sign_n_input:
833 Lrz 722
        db      '2',0
205 heavyiron 723
 
724
app_ipc ipc_buffer 32
1098 Lrz 725
align 4
205 heavyiron 726
 
451 heavyiron 727
mouse_flag: dd 0x0
728
structure_of_potock:
729
rb 100
730
 
1098 Lrz 731
align 4
732
 
833 Lrz 733
cur_number        dd      ?
205 heavyiron 734
 
833 Lrz 735
sign_n        db      ?
205 heavyiron 736
 
833 Lrz 737
slot_n        dd ?
205 heavyiron 738
 
833 Lrz 739
flags        dd ?
205 heavyiron 740
 
741
scr_buf:
833 Lrz 742
.ptr        dd      ?
743
.end_ptr        dd      ?
205 heavyiron 744
.size:
745
.height        dw      ?
833 Lrz 746
.width        dw      ?
205 heavyiron 747
 
748
fs_struc:
749
.funk_n        dd      ?
833 Lrz 750
        dd      ?
751
        dd      ?
752
.bytes_to_write  dd      ?
753
.data_ptr        dd    ?,?
205 heavyiron 754
.fn_ptr        dd      ?
755
 
756
sf_buf:
757
.bmp_header   dd      ?
758
.bmp_area     dd      ?
833 Lrz 759
.end          dd      ?
205 heavyiron 760
 
307 Lrz 761
set_rect_window_pid dd ?
762
set_rect_window_slot dd ?
763
 
1098 Lrz 764
align 4
765
 
766
ed_buffer:
767
.1: db '/sys/*.bmp',0
768
rb 287
769
.2: db '100',0
770
 rb 6
771
.3:  rb 10
772
 
773
 
774
align 4
307 Lrz 775
rect_input_buffer:
776
.left rb 6
777
.top  rb 6
833 Lrz 778
.width  rb 6
307 Lrz 779
.height rb 6
780
 
205 heavyiron 781
cmdstr rb 257
782
 
1098 Lrz 783
align 4
205 heavyiron 784
 
785
file_name:
833 Lrz 786
        rb      1058
205 heavyiron 787
 
788
scr screen_prop
307 Lrz 789
rect:
790
.left dw ?
791
.top dw ?
792
.height dw ?
793
.width dw ?
794
 
205 heavyiron 795
sc sys_color_table
833 Lrz 796
app procinfo        ; информация о главном окне
307 Lrz 797
active_app procinfo ; информация об активном окне
798
set_rect_window_procinfo procinfo  ; информация об окне области
833 Lrz 799
shoot_esp rb 512                   ; стек потока фотканья
800
set_rect_window_esp rb 512         ; стек окна области
1098 Lrz 801
;        app_end    ; конец программы
802
align 4
803
cur_dir_path    rb 4096
804
library_path    rb 4096
805
i_end_tread:
806
rb 1024
807
align 4
808
i_end: