Subversion Repositories Kolibri OS

Rev

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