Rev 267 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
178 | heavyiron | 1 | ;POP_WIDTH = (popup_text.max_title+popup_text.max_accel+6)*6 |
2 | POP_IHEIGHT = 16 |
||
3 | ;POP_HEIGHT = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4 |
||
4 | |||
5 | func calc_middle |
||
6 | shr eax,1 |
||
7 | shr ebx,1 |
||
8 | and eax,0x007F7F7F |
||
9 | and ebx,0x007F7F7F |
||
10 | add eax,ebx |
||
11 | ret |
||
12 | endf |
||
13 | |||
14 | func calc_3d_colors |
||
15 | pushad |
||
16 | m2m [cl_3d_normal],[sc.work] |
||
17 | m2m [cl_3d_inset],[sc.work_graph] |
||
18 | push [cl_3d_normal] |
||
19 | add byte[esp],48 |
||
20 | jnc @f |
||
21 | mov byte[esp],255 |
||
22 | @@: add byte[esp+1],48 |
||
23 | jnc @f |
||
24 | mov byte[esp+1],255 |
||
25 | @@: add byte[esp+2],48 |
||
26 | jnc @f |
||
27 | mov byte[esp+2],255 |
||
28 | @@: pop [cl_3d_outset] |
||
29 | mov eax,[cl_3d_inset] |
||
30 | mov ebx,[cl_3d_outset] |
||
31 | call calc_middle |
||
32 | mov [cl_3d_pushed],eax |
||
33 | mov eax,[cl_3d_normal] |
||
34 | mov ebx,[sc.work_text] |
||
35 | call calc_middle |
||
36 | mov [cl_3d_grayed],eax |
||
37 | popad |
||
38 | ret |
||
39 | endf |
||
40 | |||
41 | func draw_3d_panel ; x,y,w,h |
||
42 | cmp dword[esp+8],4 |
||
43 | jl .exit |
||
44 | cmp dword[esp+4],4 |
||
45 | jl .exit |
||
46 | mov ebx,[esp+16-2] |
||
47 | mov bx,[esp+8] |
||
48 | inc ebx |
||
49 | mov ecx,[esp+12-2] |
||
50 | mov cx,[esp+4] |
||
51 | inc ecx |
||
52 | mcall 13,,,[cl_3d_normal];0x00EEEEEE;[sc.work] |
||
53 | dec ebx |
||
54 | add bx,[esp+16] |
||
55 | mov cx,[esp+12] |
||
56 | mcall 38,,,[cl_3d_inset];0x006382BF;[sc.work_text] |
||
57 | add ecx,[esp+4-2] |
||
58 | add cx,[esp+4] |
||
59 | mcall |
||
60 | mov bx,[esp+16] |
||
61 | mov ecx,[esp+12-2] |
||
62 | mov cx,[esp+4] |
||
63 | add cx,[esp+12] |
||
64 | mcall |
||
65 | add ebx,[esp+8-2] |
||
66 | add bx,[esp+8] |
||
67 | mcall |
||
68 | mov ebx,[esp+16-2] |
||
69 | mov bx,[esp+8] |
||
70 | add bx,[esp+16] |
||
71 | add ebx,1*65536-1 |
||
72 | mov ecx,[esp+12-2] |
||
73 | mov cx,[esp+12] |
||
74 | add ecx,0x00010001 |
||
75 | mcall ,,,[cl_3d_outset] |
||
76 | mov bx,[esp+16] |
||
77 | inc ebx |
||
78 | mov ecx,[esp+12-2] |
||
79 | mov cx,[esp+4] |
||
80 | add cx,[esp+12] |
||
81 | add ecx,2*65536-1 |
||
82 | mcall |
||
83 | .exit: |
||
84 | ret 4*4 |
||
85 | endf |
||
86 | |||
87 | popup_thread_start: |
||
88 | mov [popup_active],1 |
||
89 | mov [pi_cur],0 |
||
90 | mov ebp,[esp] |
||
91 | mcall 14 |
||
92 | movzx ebx,ax |
||
93 | shr eax,16 |
||
94 | movzx ecx,[ebp+POPUP.x] |
||
95 | add cx,[ebp+POPUP.width] |
||
96 | cmp ecx,eax |
||
97 | jle @f |
||
98 | mov cx,[ebp+POPUP.width] |
||
99 | sub [ebp+POPUP.x],cx |
||
100 | @@: movzx ecx,[ebp+POPUP.y] |
||
101 | add cx,[ebp+POPUP.height] |
||
102 | cmp ecx,ebx |
||
103 | jle @f |
||
104 | mov cx,[ebp+POPUP.height] |
||
105 | sub [ebp+POPUP.y],cx |
||
106 | @@: mcall 40,01100111b ; ipc mouse button key redraw |
||
107 | cmp [mi_cur],0 |
||
108 | jl .2 |
||
109 | sub esp,32-16 |
||
110 | push 0 0 8 0 |
||
111 | mcall 60,1,esp,32 |
||
112 | .2: call draw_popup_wnd |
||
113 | |||
114 | still_popup: |
||
115 | cmp [main_closed],1 |
||
116 | je close_popup |
||
117 | mcall 10 |
||
118 | cmp eax,1 |
||
119 | je popup_thread_start.2 |
||
120 | cmp eax,2 |
||
121 | je key_popup |
||
122 | cmp eax,3 |
||
123 | je button_popup |
||
124 | cmp eax,6 |
||
125 | je mouse_popup |
||
126 | cmp eax,7 |
||
127 | jne still_popup |
||
128 | |||
129 | mov ebp,[POPUP_STACK];-32+12+4] |
||
130 | mov dword[POPUP_STACK-32+4],8 |
||
131 | movzx ebx,[ebp+POPUP.x] |
||
132 | movzx ecx,[ebp+POPUP.y] |
||
133 | movzx edx,[ebp+POPUP.width] |
||
134 | movzx esi,[ebp+POPUP.height] |
||
135 | mcall 67 |
||
136 | ; call draw_popup_wnd |
||
137 | jmp still_popup |
||
138 | |||
139 | mouse_popup: |
||
140 | mov ecx,mst2 |
||
141 | call get_mouse_event |
||
142 | cmp al,MEV_LDOWN |
||
143 | je check_popup_click |
||
144 | cmp al,MEV_MOVE |
||
145 | je check_popup_move |
||
146 | |||
147 | mcall 9,p_info2,-1 |
||
148 | cmp ax,[p_info2.window_stack_position] |
||
149 | jne close_popup |
||
150 | |||
151 | jmp still_popup |
||
152 | |||
153 | check_popup_click: |
||
154 | mov eax,[pi_cur] |
||
155 | or al,al |
||
156 | js close_popup |
||
157 | jz still_popup |
||
158 | mov ebx,[ebp+POPUP.actions] |
||
159 | mov [just_from_popup],1 |
||
160 | call dword[ebx+eax*4-4];dword[popup_text.actions+eax*4-4] |
||
161 | inc [just_from_popup] |
||
162 | jmp close_popup |
||
163 | |||
164 | check_popup_move: |
||
165 | mov eax,[pi_cur] |
||
166 | call get_active_popup_item |
||
167 | cmp eax,[pi_cur] |
||
168 | je still_popup |
||
169 | call draw_popup_wnd |
||
170 | jmp still_popup |
||
171 | |||
172 | key_popup: |
||
173 | mcall ;2 |
||
174 | cmp ah,27 |
||
175 | jne still_popup |
||
176 | |||
177 | button_popup: |
||
178 | mcall 17 |
||
179 | |||
180 | close_popup: |
||
181 | mcall 18,3,[p_info.PID] |
||
182 | mov [popup_active],0 |
||
183 | mcall -1 |
||
184 | |||
185 | func draw_popup_wnd |
||
186 | mcall 12,1 |
||
187 | |||
188 | ; mcall 48,3,sc,sizeof.system_colors |
||
189 | ; call calc_3d_colors |
||
190 | |||
191 | ; mov ebx,[p_pos] |
||
192 | ; mov ecx,[p_pos-2] |
||
193 | ; mov bx,POP_WIDTH |
||
194 | ; mov cx,POP_HEIGHT |
||
195 | mov ebx,dword[ebp+POPUP.x-2] |
||
196 | mov bx,[ebp+POPUP.width] |
||
197 | mov ecx,dword[ebp+POPUP.y-2] |
||
198 | mov cx,[ebp+POPUP.height] |
||
199 | mcall 0,,,0x01000000,0x01000000 |
||
200 | |||
201 | movzx ebx,bx |
||
202 | movzx ecx,cx |
||
203 | pushd 0 0 ebx ecx ;POP_WIDTH POP_HEIGHT |
||
204 | call draw_3d_panel |
||
205 | |||
206 | mov [pi_sel],0 |
||
207 | ; mcall 37,1 |
||
208 | ; movsx ebx,ax |
||
209 | ; sar eax,16 |
||
210 | ; mov [c_pos.x],eax |
||
211 | ; mov [c_pos.y],ebx |
||
212 | |||
213 | mov eax,4 |
||
214 | mpack ebx,3*6,3 |
||
215 | mov ecx,[sc.work_text] |
||
216 | mov edx,[ebp+POPUP.data];popup_text.data |
||
217 | @@: inc [pi_sel] |
||
218 | inc edx |
||
219 | movzx esi,byte[edx-1] |
||
220 | cmp byte[edx],'-' |
||
221 | jne .lp1 |
||
222 | pushad |
||
223 | mov ecx,ebx |
||
224 | shl ecx,16 |
||
225 | mov cx,bx |
||
226 | movzx ebx,[ebp+POPUP.width] |
||
227 | add ebx,0x00010000-1 |
||
228 | ; mpack ebx,1,POP_WIDTH-1 |
||
229 | add ecx,0x00010001 |
||
230 | mcall 38,,,[cl_3d_inset];0x006382BF;[sc.work_text] |
||
231 | add ecx,0x00010001 |
||
232 | mcall ,,,[cl_3d_outset];0x00FFFFFF |
||
233 | popad |
||
234 | add ebx,4 |
||
235 | jmp .lp2 |
||
236 | .lp1: mov edi,[pi_sel] |
||
237 | cmp edi,[pi_cur] |
||
238 | jne .lp3 |
||
239 | test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
||
240 | jz .lp3 |
||
241 | pushad |
||
242 | movzx ecx,bx |
||
243 | shl ecx,16 |
||
244 | mov cl,POP_IHEIGHT-1 |
||
245 | movzx ebx,[ebp+POPUP.width] |
||
246 | add ebx,0x00010000-1 |
||
247 | ; mpack ebx,1,POP_WIDTH-1 |
||
248 | mcall 13,,,[cl_3d_pushed];0x00A3B8CC |
||
249 | rol ecx,16 |
||
250 | mov ax,cx |
||
251 | rol ecx,16 |
||
252 | mov cx,ax |
||
253 | mcall 38,,,[cl_3d_inset];0x006382BF |
||
254 | add ecx,(POP_IHEIGHT-1)*65536+POP_IHEIGHT-1 |
||
255 | mcall ,,,[cl_3d_outset];0x00FFFFFF |
||
256 | popad |
||
257 | .lp3: add ebx,(POP_IHEIGHT-7)/2 |
||
258 | |||
259 | pushad |
||
260 | test byte[ebp+edi-1],0x02 |
||
261 | jz .lp8 |
||
262 | movzx ecx,bx |
||
263 | shl ecx,16 |
||
264 | mov cx,bx |
||
265 | shr ebx,16 |
||
266 | push bx |
||
267 | shl ebx,16 |
||
268 | pop bx |
||
269 | add ecx,0x00040003 |
||
270 | sub ebx,0x000A000B |
||
271 | mcall 38,,,[sc.work_text] |
||
272 | add ecx,0x00010001 |
||
273 | mcall |
||
274 | add ebx,4 |
||
275 | sub ecx,2 |
||
276 | mcall |
||
277 | sub ecx,0x00010001 |
||
278 | mcall |
||
279 | .lp8: popad |
||
280 | |||
281 | mov ecx,[sc.work_text];0x00000000 |
||
282 | test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
||
283 | jnz .lp5 |
||
284 | add ebx,0x00010001 |
||
285 | mov ecx,[cl_3d_outset] |
||
286 | mcall |
||
287 | sub ebx,0x00010001 |
||
288 | mov ecx,[cl_3d_inset] |
||
289 | ;mov ecx,[sc.grab_text];0x007F7F7F |
||
290 | .lp5: mcall |
||
291 | push ebx |
||
292 | add edx,esi |
||
293 | inc edx |
||
294 | movzx esi,byte[edx-1] |
||
295 | add ebx,[ebp+POPUP.acc_ofs] ; ((popup_text.max_title+2)*6-1)*65536 |
||
296 | cmp edi,[pi_cur] |
||
297 | je .lp4 |
||
298 | mov ecx,[cl_3d_inset];0x006382BF |
||
299 | .lp4: test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
||
300 | jnz .lp6 |
||
301 | add ebx,0x00010001 |
||
302 | mov ecx,[cl_3d_outset] |
||
303 | mcall |
||
304 | sub ebx,0x00010001 |
||
305 | mov ecx,[cl_3d_inset] |
||
306 | ;mov ecx,[sc.grab_text];0x007F7F7F |
||
307 | .lp6: mcall |
||
308 | pop ebx |
||
309 | add ebx,POP_IHEIGHT-(POP_IHEIGHT-7)/2 |
||
310 | .lp2: add edx,esi |
||
311 | cmp byte[edx],0 |
||
312 | jne @b |
||
313 | .exit: |
||
314 | mcall 12,2 |
||
315 | ret |
||
316 | endf |
||
317 | |||
318 | pi_sel dd ? |
||
319 | pi_cur dd ? |
||
320 | p_pos dd ? |
||
321 | popup_active db 0 |