Subversion Repositories Kolibri OS

Rev

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

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