Subversion Repositories Kolibri OS

Rev

Rev 1228 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1098 Lrz 1
;In this file content a macros need for compilation the scrshoot
2
evm_redraw equ 1
3
evm_key equ 10b
4
evm_button equ 100b
5
evm_mouse equ 100000b
6
evm_ipc equ 1000000b
7
 
8
;--- сообщить системе о начале перерисовки окна ---
9
macro draw_status text_ptr
10
{
11
        mov     [status.text],dword text_ptr
12
        call    send_draw_status
13
}
14
 
15
macro start_draw_window
16
{
17
        ;mov     eax,12
18
        push    12
19
        pop     eax
20
        xor     ebx,ebx
21
        inc     ebx
22
        mcall
23
}
24
 
25
;--- сообщить системе о завершении перерисовки окна ---
26
macro stop_draw_window
27
{
28
        ;mov     eax,12
29
        push    12
30
        pop     eax
31
        ;mov     ebx,2
32
        push    2
33
        pop     ebx
34
        mcall
35
}
36
 
37
;--- установить маску ожидаемых событий ---
38
 
39
;--- ожидать события ---
40
macro wait_event redraw,key,button,mouse,ipc,other
41
{
42
        mov     eax,10
43
        mcall
44
        dec     ax
45
if  eq <>
46
else
47
        jz      redraw
48
end if
49
        dec     ax
50
if  eq <>
51
else
52
        jz      key
53
end if
54
        dec     ax
55
if 
56
else
57
        jz      button
58
end if
59
        dec     ax
60
        dec     ax
61
        dec     ax
62
if  eq <>
63
else
64
        jz      mouse
65
end if
66
if  eq <>
67
else
68
        dec     ax
69
        jz      ipc
70
end if
71
if  eq <>
72
        jmp     still
73
else
74
        jmp     other
75
end if
76
}
77
;--- установить маску ожидаемых событий ---
78
macro set_events_mask mask
79
{
80
        ;mov     eax,40
81
        push    40
82
        pop     eax
83
        ;mov     ebx,mask
84
        push    mask
85
        pop     ebx
86
        mcall
87
}
88
 
89
macro check_boxes_set_sys_color start,end,color_table
90
{
91
ch_left equ [edi]    ;координата начала рисования по х
92
ch_top equ [edi+2]   ;координата начала рисования по у
93
ch_text_margin equ [edi+4]      ;=4 расстояние от прямоугольника чек бокса до надписи
94
ch_size equ [edi+8]             ;12 размер квадрата чек бокса
95
ch_color equ [edi+12]           ;цвет внутри checkbox
96
ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
97
ch_text_color equ   [edi+20];[edi+4]  ;цвет текста
98
ch_text_ptr equ [edi+24]    ;указатель на начало текстовой строки
99
ch_text_length equ [edi+28]
100
ch_flags equ [edi+32]       ;флаги
101
 
102
 
103
;ch_left equ [edi]    ;координата начала рисования по х
104
;ch_top equ [edi+2]   ;координата начала рисования по у
105
;ch_color equ [edi+4] ;цвет внутри checkbox
106
;ch_border_color equ [edi+8] ;цвет рамки checkbox
107
;ch_text_color equ [edi+12]  ;цвет текста
108
;ch_text_ptr equ [edi+16]    ;указатель на начало текстовой строки
109
;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст)
110
;ch_flags equ [edi+24]       ;флаги
111
 
112
        mov     edi,start
113
        mov     ecx,((end-start)/ch_struc_size)
114
        mov     esi,color_table
115
@@:
116
        push    dword [esi+32]
117
        pop     dword ch_text_color
118
        push    dword [esi+36]
119
        pop     dword ch_border_color
120
        add     edi,ch_struc_size
121
        loop    @b
122
}
123
macro get_key
124
{
125
        ;mov     eax,2
126
        push    2
127
        pop     eax
128
        mcall
129
}
130
macro edit_boxes_set_sys_color start,end,color_table
131
{
132
 
133
ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
134
ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
135
        mov     edi,start
136
        mov     ecx,((end-start)/ed_struc_size)
137
        mov     esi,color_table
138
@@:
139
        mov     eax,[esi+36]
140
        mov     ebx,[esi+20]
141
        mov     dword ed_focus_border_color,eax
142
        shr     bh,1
143
        shr     bl,1
144
        shr     ah,1
145
        shr     al,1
146
        add     ah,bh
147
        add     al,bl
148
        ror     eax,16
149
        ror     ebx,16
150
        shr     bl,1
151
        shr     al,1
152
        add     al,bl
153
        ror     eax,16
154
        mov     dword ed_blur_border_color,eax
155
        add     edi,ed_struc_size
156
        loop    @b
157
}
158
;--- получить код нажатой кнопки ---
159
macro get_pressed_button
160
{
161
        ;mov     eax,17
162
        push    17
163
        pop     eax
164
        mcall
165
}
166
macro get_active_window
167
{
168
        mov     eax,18
169
        mov     ebx,7
170
        mcall
171
}
172
;--- Ї®«гзЁвм Ё­д®а¬ жЁо ® Їа®жҐбᥠ---
173
macro get_procinfo proc_inf_buf,slot_num
174
{
175
        ;mov     eax,9
176
        push    9
177
        pop     eax
178
        ;mov     ebx,proc_inf_buf
179
        push    proc_inf_buf
180
        pop     ebx
181
if  eq <>
182
        xor     ecx,ecx
183
        dec     ecx
184
else
185
        ;mov     ecx,slot_num
186
        push    slot_num
187
        pop     ecx
188
end if
189
        mcall
190
}
191
macro get_sys_colors col_buf
192
{
193
        ;mov     eax,48
194
        push    48
195
        pop     eax
196
        ;mov     ebx,3
197
        push    3
198
        pop     ebx
199
        ;mov     ecx,col_buf
200
        push    col_buf
201
        pop     ecx
202
        ;mov     edx,40
203
        push    40
204
        pop     edx
205
        mcall
206
}
207
macro get_screen_prop  struc_ptr
208
{
209
        mov     eax,61
210
        push    eax eax
211
        xor     ebx,ebx
212
        inc     ebx
213
        mcall
214
        mov     [struc_ptr],eax
215
        pop     eax
216
        inc     ebx
217
        mcall
218
        mov     [struc_ptr+4],ax
219
        pop     eax
220
        inc     ebx
221
        mcall
222
        mov     [struc_ptr+6],eax
223
}
224
macro min_window
225
{
226
        mov     eax,18
227
        mov     ebx,10
228
        mcall
229
}
230
macro app_close
231
{
232
        or     eax,-1
233
        mcall
234
}
235
macro get_skin_height
236
{
237
        mov     eax,48
238
        mov     ebx,4
239
        mcall
240
}
241
macro delay time
242
{
243
        mov     eax,5
244
if 
245
else
246
        mov     ebx,time
247
end if
248
        mcall
249
}
250
macro activ_window slot_n
251
{
252
        mov     eax,18
253
        mov     ebx,3
254
if  eq <>
255
else
256
        mov     ecx,slot_n
257
end if
258
        mcall
259
}
260
struc screen_prop
261
{
262
.height: dw ? ;+0
263
.width: dw ?  ;+2
264
.bitspp: dw ? ;+4
265
.bytesps: dd ?;+6
266
}
267
struc sys_color_table
268
{
269
.frames: dd ?  ;+0
270
.grab: dd ?    ;+4
271
.grab_button: dd ? ;+8
272
.grab_button_text: dd ?  ;+12
273
.grab_text: dd ?  ;+16
274
.work: dd ?       ;+20
275
.work_button: dd ?;+24
276
.work_button_text: dd ? ;+28
277
.work_text: dd ?        ;+32
278
.work_graph: dd ?       ;+36
279
}
280
struc procinfo
281
{
282
.takts_per_second: dd ?
283
.window_stack_pos: dw ?
284
.slot_number: dw ?
285
dw ?
286
.name: rb 11
287
.align: db ?
288
.addres: dd ?
289
.use_mem: dd ?
290
.pid: dd ?
291
.left: dd ?
292
.top: dd ?
293
.width: dd ?
294
.height: dd ?
295
.slot_state: dw ?
296
rb (1024-56)
297
}
298
 
299
 
300
 
301
struc ipc_buffer size
302
{
303
.block: dd ?
304
.in_use: dd ?
305
.messages: rb size
306
}
307
 
308
;--- жўҐв  ---
309
cl_white=0xffffff
310
cl_black=0x000000
311
 
312
ch_struc_size=36