Rev 49 | Rev 53 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 49 | Rev 52 | ||
---|---|---|---|
1 | include "skindata.inc" |
1 | include "skindata.inc" |
2 | 2 | ||
3 | skin_data = 0x00778000 |
3 | skin_data = 0x00778000 |
4 | 4 | ||
5 | load_skin_file: |
5 | load_skin_file: |
6 | ; eax = filename |
6 | ; eax = filename |
7 | ; edx = destination |
7 | ; edx = destination |
8 | mov ebx,1 |
8 | mov ebx,1 |
9 | or ecx,-1 |
9 | or ecx,-1 |
10 | mov esi,12 |
10 | mov esi,12 |
11 | call fileread |
11 | call fileread |
12 | ret |
12 | ret |
13 | 13 | ||
14 | struct SKIN_HEADER |
14 | struct SKIN_HEADER |
15 | .ident dd ? |
15 | .ident dd ? |
16 | .version dd ? |
16 | .version dd ? |
17 | .params dd ? |
17 | .params dd ? |
18 | .buttons dd ? |
18 | .buttons dd ? |
19 | .bitmaps dd ? |
19 | .bitmaps dd ? |
20 | ends |
20 | ends |
21 | 21 | ||
22 | struct SKIN_PARAMS |
22 | struct SKIN_PARAMS |
23 | .skin_height dd ? |
23 | .skin_height dd ? |
24 | .margin.right dw ? |
24 | .margin.right dw ? |
25 | .margin.left dw ? |
25 | .margin.left dw ? |
26 | .margin.bottom dw ? |
26 | .margin.bottom dw ? |
27 | .margin.top dw ? |
27 | .margin.top dw ? |
28 | .colors.inner dd ? |
28 | .colors.inner dd ? |
29 | .colors.outer dd ? |
29 | .colors.outer dd ? |
30 | .colors.frame dd ? |
30 | .colors.frame dd ? |
31 | .colors_1.inner dd ? |
31 | .colors_1.inner dd ? |
32 | .colors_1.outer dd ? |
32 | .colors_1.outer dd ? |
33 | .colors_1.frame dd ? |
33 | .colors_1.frame dd ? |
34 | .dtp.size dd ? |
34 | .dtp.size dd ? |
35 | .dtp.data db 40 dup (?) |
35 | .dtp.data db 40 dup (?) |
36 | ends |
36 | ends |
37 | 37 | ||
38 | struct SKIN_BUTTONS |
38 | struct SKIN_BUTTONS |
39 | .type dd ? |
39 | .type dd ? |
40 | .pos: |
40 | .pos: |
41 | .left dw ? |
41 | .left dw ? |
42 | .top dw ? |
42 | .top dw ? |
43 | .size: |
43 | .size: |
44 | .width dw ? |
44 | .width dw ? |
45 | .height dw ? |
45 | .height dw ? |
46 | ends |
46 | ends |
47 | 47 | ||
48 | struct SKIN_BITMAPS |
48 | struct SKIN_BITMAPS |
49 | .kind dw ? |
49 | .kind dw ? |
50 | .type dw ? |
50 | .type dw ? |
51 | .data dd ? |
51 | .data dd ? |
52 | ends |
52 | ends |
53 | 53 | ||
54 | load_skin: |
54 | load_skin: |
55 | pushad |
55 | pushad |
56 | mov eax,_skin_file |
56 | mov eax,_skin_file |
57 | mov edx,skin_data |
57 | mov edx,skin_data |
58 | call load_skin_file |
58 | call load_skin_file |
59 | call parse_skin_data |
59 | call parse_skin_data |
60 | popad |
60 | popad |
61 | ret |
61 | ret |
62 | 62 | ||
63 | parse_skin_data: |
63 | parse_skin_data: |
64 | mov ebp,skin_data |
64 | mov ebp,skin_data |
65 | cmp [ebp+SKIN_HEADER.ident],'SKIN' |
65 | cmp [ebp+SKIN_HEADER.ident],'SKIN' |
66 | jne .exit |
66 | jne .exit |
67 | 67 | ||
68 | mov ebx,[ebp+SKIN_HEADER.params] |
68 | mov ebx,[ebp+SKIN_HEADER.params] |
69 | add ebx,skin_data |
69 | add ebx,skin_data |
70 | mov eax,[ebx+SKIN_PARAMS.skin_height] |
70 | mov eax,[ebx+SKIN_PARAMS.skin_height] |
71 | mov [_skinh],eax |
71 | mov [_skinh],eax |
72 | mov eax,[ebx+SKIN_PARAMS.colors.inner] |
72 | mov eax,[ebx+SKIN_PARAMS.colors.inner] |
73 | mov [skin_active.colors.inner],eax |
73 | mov [skin_active.colors.inner],eax |
74 | mov eax,[ebx+SKIN_PARAMS.colors.outer] |
74 | mov eax,[ebx+SKIN_PARAMS.colors.outer] |
75 | mov [skin_active.colors.outer],eax |
75 | mov [skin_active.colors.outer],eax |
76 | mov eax,[ebx+SKIN_PARAMS.colors.frame] |
76 | mov eax,[ebx+SKIN_PARAMS.colors.frame] |
77 | mov [skin_active.colors.frame],eax |
77 | mov [skin_active.colors.frame],eax |
78 | mov eax,[ebx+SKIN_PARAMS.colors_1.inner] |
78 | mov eax,[ebx+SKIN_PARAMS.colors_1.inner] |
79 | mov [skin_inactive.colors.inner],eax |
79 | mov [skin_inactive.colors.inner],eax |
80 | mov eax,[ebx+SKIN_PARAMS.colors_1.outer] |
80 | mov eax,[ebx+SKIN_PARAMS.colors_1.outer] |
81 | mov [skin_inactive.colors.outer],eax |
81 | mov [skin_inactive.colors.outer],eax |
82 | mov eax,[ebx+SKIN_PARAMS.colors_1.frame] |
82 | mov eax,[ebx+SKIN_PARAMS.colors_1.frame] |
83 | mov [skin_inactive.colors.frame],eax |
83 | mov [skin_inactive.colors.frame],eax |
84 | lea esi,[ebx+SKIN_PARAMS.dtp.data] |
84 | lea esi,[ebx+SKIN_PARAMS.dtp.data] |
85 | mov edi,common_colours |
85 | mov edi,common_colours |
86 | mov ecx,[ebx+SKIN_PARAMS.dtp.size] |
86 | mov ecx,[ebx+SKIN_PARAMS.dtp.size] |
87 | and ecx,127 |
87 | and ecx,127 |
88 | cld |
88 | cld |
89 | rep movsb |
89 | rep movsb |
90 | mov eax,dword[ebx+SKIN_PARAMS.margin.left] |
90 | mov eax,dword[ebx+SKIN_PARAMS.margin.right] |
91 | mov dword[_skinmargins+0],eax |
91 | mov dword[_skinmargins+0],eax |
92 | mov eax,dword[ebx+SKIN_PARAMS.margin.top] |
92 | mov eax,dword[ebx+SKIN_PARAMS.margin.bottom] |
93 | mov dword[_skinmargins+4],eax |
93 | mov dword[_skinmargins+4],eax |
94 | 94 | ||
95 | mov ebx,[ebp+SKIN_HEADER.bitmaps] |
95 | mov ebx,[ebp+SKIN_HEADER.bitmaps] |
96 | add ebx,skin_data |
96 | add ebx,skin_data |
97 | .lp1: cmp dword[ebx],0 |
97 | .lp1: cmp dword[ebx],0 |
98 | je .end_bitmaps |
98 | je .end_bitmaps |
99 | movzx eax,[ebx+SKIN_BITMAPS.kind] |
99 | movzx eax,[ebx+SKIN_BITMAPS.kind] |
100 | movzx ecx,[ebx+SKIN_BITMAPS.type] |
100 | movzx ecx,[ebx+SKIN_BITMAPS.type] |
101 | dec eax |
101 | dec eax |
102 | jnz .not_left |
102 | jnz .not_left |
103 | xor eax,eax |
103 | xor eax,eax |
104 | mov edx,skin_active.left.data |
104 | mov edx,skin_active.left.data |
105 | or ecx,ecx |
105 | or ecx,ecx |
106 | jnz @f |
106 | jnz @f |
107 | mov edx,skin_inactive.left.data |
107 | mov edx,skin_inactive.left.data |
108 | @@: jmp .next_bitmap |
108 | @@: jmp .next_bitmap |
109 | .not_left: |
109 | .not_left: |
110 | dec eax |
110 | dec eax |
111 | jnz .not_oper |
111 | jnz .not_oper |
112 | mov esi,[ebx+SKIN_BITMAPS.data] |
112 | mov esi,[ebx+SKIN_BITMAPS.data] |
113 | add esi,skin_data |
113 | add esi,skin_data |
114 | mov eax,[esi+0] |
114 | mov eax,[esi+0] |
115 | neg eax |
115 | neg eax |
116 | mov edx,skin_active.oper.data |
116 | mov edx,skin_active.oper.data |
117 | or ecx,ecx |
117 | or ecx,ecx |
118 | jnz @f |
118 | jnz @f |
119 | mov edx,skin_inactive.oper.data |
119 | mov edx,skin_inactive.oper.data |
120 | @@: jmp .next_bitmap |
120 | @@: jmp .next_bitmap |
121 | .not_oper: |
121 | .not_oper: |
122 | dec eax |
122 | dec eax |
123 | jnz .not_base |
123 | jnz .not_base |
124 | mov eax,[skin_active.left.width] |
124 | mov eax,[skin_active.left.width] |
125 | mov edx,skin_active.base.data |
125 | mov edx,skin_active.base.data |
126 | or ecx,ecx |
126 | or ecx,ecx |
127 | jnz @f |
127 | jnz @f |
128 | mov eax,[skin_inactive.left.width] |
128 | mov eax,[skin_inactive.left.width] |
129 | mov edx,skin_inactive.base.data |
129 | mov edx,skin_inactive.base.data |
130 | @@: jmp .next_bitmap |
130 | @@: jmp .next_bitmap |
131 | .not_base: |
131 | .not_base: |
132 | add ebx,8 |
132 | add ebx,8 |
133 | jmp .lp1 |
133 | jmp .lp1 |
134 | .next_bitmap: |
134 | .next_bitmap: |
135 | mov ecx,[ebx+SKIN_BITMAPS.data] |
135 | mov ecx,[ebx+SKIN_BITMAPS.data] |
136 | add ecx,skin_data |
136 | add ecx,skin_data |
137 | mov [edx+4],eax |
137 | mov [edx+4],eax |
138 | mov eax,[ecx+0] |
138 | mov eax,[ecx+0] |
139 | mov [edx+8],eax |
139 | mov [edx+8],eax |
140 | add ecx,8 |
140 | add ecx,8 |
141 | mov [edx+0],ecx |
141 | mov [edx+0],ecx |
142 | add ebx,8 |
142 | add ebx,8 |
143 | jmp .lp1 |
143 | jmp .lp1 |
144 | .end_bitmaps: |
144 | .end_bitmaps: |
145 | 145 | ||
146 | mov ebx,[ebp+SKIN_HEADER.buttons] |
146 | mov ebx,[ebp+SKIN_HEADER.buttons] |
147 | add ebx,skin_data |
147 | add ebx,skin_data |
148 | .lp2: cmp dword[ebx],0 |
148 | .lp2: cmp dword[ebx],0 |
149 | je .end_buttons |
149 | je .end_buttons |
150 | mov eax,[ebx+SKIN_BUTTONS.type] |
150 | mov eax,[ebx+SKIN_BUTTONS.type] |
151 | dec eax |
151 | dec eax |
152 | jnz .not_close |
152 | jnz .not_close |
153 | mov edx,skin_btn_close |
153 | mov edx,skin_btn_close |
154 | jmp .next_button |
154 | jmp .next_button |
155 | .not_close: |
155 | .not_close: |
156 | dec eax |
156 | dec eax |
157 | jnz .not_minimize |
157 | jnz .not_minimize |
158 | mov edx,skin_btn_minimize |
158 | mov edx,skin_btn_minimize |
159 | jmp .next_button |
159 | jmp .next_button |
160 | .not_minimize: |
160 | .not_minimize: |
161 | add ebx,12 |
161 | add ebx,12 |
162 | jmp .lp2 |
162 | jmp .lp2 |
163 | .next_button: |
163 | .next_button: |
164 | movsx eax,[ebx+SKIN_BUTTONS.left] |
164 | movsx eax,[ebx+SKIN_BUTTONS.left] |
165 | mov [edx+SKIN_BUTTON.left],eax |
165 | mov [edx+SKIN_BUTTON.left],eax |
166 | movsx eax,[ebx+SKIN_BUTTONS.top] |
166 | movsx eax,[ebx+SKIN_BUTTONS.top] |
167 | mov [edx+SKIN_BUTTON.top],eax |
167 | mov [edx+SKIN_BUTTON.top],eax |
168 | movsx eax,[ebx+SKIN_BUTTONS.width] |
168 | movsx eax,[ebx+SKIN_BUTTONS.width] |
169 | mov [edx+SKIN_BUTTON.width],eax |
169 | mov [edx+SKIN_BUTTON.width],eax |
170 | movsx eax,[ebx+SKIN_BUTTONS.height] |
170 | movsx eax,[ebx+SKIN_BUTTONS.height] |
171 | mov [edx+SKIN_BUTTON.height],eax |
171 | mov [edx+SKIN_BUTTON.height],eax |
172 | add ebx,12 |
172 | add ebx,12 |
173 | jmp .lp2 |
173 | jmp .lp2 |
174 | .end_buttons: |
174 | .end_buttons: |
175 | 175 | ||
176 | .exit: |
176 | .exit: |
177 | ret |
177 | ret |
178 | 178 | ||
179 | drawwindow_IV: |
179 | drawwindow_IV: |
180 | ;param1 - aw_yes |
180 | ;param1 - aw_yes |
181 | 181 | ||
182 | pusha |
182 | pusha |
183 | 183 | ||
184 | push edx |
184 | push edx |
185 | 185 | ||
186 | mov edi,[esp] ; RECTANGLE |
186 | mov edi,[esp] ; RECTANGLE |
187 | 187 | ||
188 | mov ebp,skin_active |
188 | mov ebp,skin_active |
189 | cmp byte [esp+32+4+4],0 |
189 | cmp byte [esp+32+4+4],0 |
190 | jne @f |
190 | jne @f |
191 | mov ebp,skin_inactive |
191 | mov ebp,skin_inactive |
192 | @@: |
192 | @@: |
193 | 193 | ||
194 | mov eax,[edi+0] |
194 | mov eax,[edi+0] |
195 | shl eax,16 |
195 | shl eax,16 |
196 | mov ax,[edi+0] |
196 | mov ax,[edi+0] |
197 | add ax,[edi+8] |
197 | add ax,[edi+8] |
198 | mov ebx,[edi+4] |
198 | mov ebx,[edi+4] |
199 | shl ebx,16 |
199 | shl ebx,16 |
200 | mov bx,[edi+4] |
200 | mov bx,[edi+4] |
201 | add bx,[edi+12] |
201 | add bx,[edi+12] |
202 | ; mov esi,[edi+24] |
202 | ; mov esi,[edi+24] |
203 | ; shr esi,1 |
203 | ; shr esi,1 |
204 | ; and esi,0x007f7f7f |
204 | ; and esi,0x007f7f7f |
205 | mov esi,[ebp+SKIN_DATA.colors.outer] |
205 | mov esi,[ebp+SKIN_DATA.colors.outer] |
206 | call draw_rectangle |
206 | call draw_rectangle |
207 | mov ecx,3 |
207 | mov ecx,3 |
208 | _dw3l: |
208 | _dw3l: |
209 | add eax,1*65536-1 |
209 | add eax,1*65536-1 |
210 | add ebx,1*65536-1 |
210 | add ebx,1*65536-1 |
211 | test ax,ax |
211 | test ax,ax |
212 | js no_skin_add_button |
212 | js no_skin_add_button |
213 | test bx,bx |
213 | test bx,bx |
214 | js no_skin_add_button |
214 | js no_skin_add_button |
215 | mov esi,[ebp+SKIN_DATA.colors.frame] ;[edi+24] |
215 | mov esi,[ebp+SKIN_DATA.colors.frame] ;[edi+24] |
216 | call draw_rectangle |
216 | call draw_rectangle |
217 | dec ecx |
217 | dec ecx |
218 | jnz _dw3l |
218 | jnz _dw3l |
219 | mov esi,[ebp+SKIN_DATA.colors.inner] |
219 | mov esi,[ebp+SKIN_DATA.colors.inner] |
220 | add eax,1*65536-1 |
220 | add eax,1*65536-1 |
221 | add ebx,1*65536-1 |
221 | add ebx,1*65536-1 |
222 | test ax,ax |
222 | test ax,ax |
223 | js no_skin_add_button |
223 | js no_skin_add_button |
224 | test bx,bx |
224 | test bx,bx |
225 | js no_skin_add_button |
225 | js no_skin_add_button |
226 | call draw_rectangle |
226 | call draw_rectangle |
227 | 227 | ||
228 | mov esi,[esp] |
228 | mov esi,[esp] |
229 | mov eax,[esi+8] ; window width |
229 | mov eax,[esi+8] ; window width |
230 | mov edx,[ebp+SKIN_DATA.left.left] |
230 | mov edx,[ebp+SKIN_DATA.left.left] |
231 | shl edx,16 |
231 | shl edx,16 |
232 | mov ecx,[ebp+SKIN_DATA.left.width] |
232 | mov ecx,[ebp+SKIN_DATA.left.width] |
233 | shl ecx,16 |
233 | shl ecx,16 |
234 | add ecx,[_skinh] |
234 | add ecx,[_skinh] |
235 | 235 | ||
236 | mov ebx, [ebp+SKIN_DATA.left.data] |
236 | mov ebx, [ebp+SKIN_DATA.left.data] |
237 | call sys_putimage |
237 | call sys_putimage |
238 | 238 | ||
239 | mov esi,[esp] |
239 | mov esi,[esp] |
240 | mov eax,[esi+8] |
240 | mov eax,[esi+8] |
241 | sub eax,[ebp+SKIN_DATA.left.width] |
241 | sub eax,[ebp+SKIN_DATA.left.width] |
242 | sub eax,[ebp+SKIN_DATA.oper.width] |
242 | sub eax,[ebp+SKIN_DATA.oper.width] |
243 | cmp eax,[ebp+SKIN_DATA.base.left] |
243 | cmp eax,[ebp+SKIN_DATA.base.left] |
244 | jng non_base |
244 | jng non_base |
245 | xor edx,edx |
245 | xor edx,edx |
246 | mov ebx,[ebp+SKIN_DATA.base.width] |
246 | mov ebx,[ebp+SKIN_DATA.base.width] |
247 | div ebx |
247 | div ebx |
248 | 248 | ||
249 | inc eax |
249 | inc eax |
250 | 250 | ||
251 | mov ebx,[ebp+SKIN_DATA.base.data] |
251 | mov ebx,[ebp+SKIN_DATA.base.data] |
252 | mov ecx,[ebp+SKIN_DATA.base.width] |
252 | mov ecx,[ebp+SKIN_DATA.base.width] |
253 | shl ecx,16 |
253 | shl ecx,16 |
254 | add ecx,[_skinh] |
254 | add ecx,[_skinh] |
255 | mov edx,[ebp+SKIN_DATA.base.left] |
255 | mov edx,[ebp+SKIN_DATA.base.left] |
256 | sub edx,[ebp+SKIN_DATA.base.width] |
256 | sub edx,[ebp+SKIN_DATA.base.width] |
257 | shl edx,16 |
257 | shl edx,16 |
258 | baseskinloop: |
258 | baseskinloop: |
259 | shr edx,16 |
259 | shr edx,16 |
260 | add edx,[ebp+SKIN_DATA.base.width] |
260 | add edx,[ebp+SKIN_DATA.base.width] |
261 | shl edx,16 |
261 | shl edx,16 |
262 | 262 | ||
263 | push eax ebx ecx edx |
263 | push eax ebx ecx edx |
264 | call sys_putimage |
264 | call sys_putimage |
265 | pop edx ecx ebx eax |
265 | pop edx ecx ebx eax |
266 | 266 | ||
267 | dec eax |
267 | dec eax |
268 | jnz baseskinloop |
268 | jnz baseskinloop |
269 | non_base: |
269 | non_base: |
270 | 270 | ||
271 | mov esi,[esp] |
271 | mov esi,[esp] |
272 | mov edx,[esi+8] |
272 | mov edx,[esi+8] |
273 | sub edx,[ebp+SKIN_DATA.oper.width] |
273 | sub edx,[ebp+SKIN_DATA.oper.width] |
274 | inc edx |
274 | inc edx |
275 | shl edx,16 |
275 | shl edx,16 |
276 | mov ebx,[ebp+SKIN_DATA.oper.data] |
276 | mov ebx,[ebp+SKIN_DATA.oper.data] |
277 | 277 | ||
278 | mov ecx,[ebp+SKIN_DATA.oper.width] |
278 | mov ecx,[ebp+SKIN_DATA.oper.width] |
279 | shl ecx,16 |
279 | shl ecx,16 |
280 | add ecx,[_skinh] |
280 | add ecx,[_skinh] |
281 | call sys_putimage |
281 | call sys_putimage |
282 | 282 | ||
283 | mov esi,[esp] |
283 | mov esi,[esp] |
284 | 284 | ||
285 | mov edx,[esi+04] ; WORK AREA |
285 | mov edx,[esi+04] ; WORK AREA |
286 | add edx,21+5 |
286 | add edx,21+5 |
287 | mov ebx,[esi+04] |
287 | mov ebx,[esi+04] |
288 | add ebx,[esi+12] |
288 | add ebx,[esi+12] |
289 | cmp edx,ebx |
289 | cmp edx,ebx |
290 | jg _noinside2 |
290 | jg _noinside2 |
291 | mov eax,5 |
291 | mov eax,5 |
292 | mov ebx,[_skinh] |
292 | mov ebx,[_skinh] |
293 | mov ecx,[esi+8] |
293 | mov ecx,[esi+8] |
294 | mov edx,[esi+12] |
294 | mov edx,[esi+12] |
295 | sub ecx,4 |
295 | sub ecx,4 |
296 | sub edx,4 |
296 | sub edx,4 |
297 | mov edi,[esi+16] |
297 | mov edi,[esi+16] |
298 | call [drawbar] |
298 | call [drawbar] |
299 | _noinside2: |
299 | _noinside2: |
300 | 300 | ||
301 | ;* close button |
301 | ;* close button |
302 | mov edi,[0xfe88] |
302 | mov edi,[0xfe88] |
303 | movzx eax,word [edi] |
303 | movzx eax,word [edi] |
304 | cmp eax,1000 |
304 | cmp eax,1000 |
305 | jge no_skin_add_button |
305 | jge no_skin_add_button |
306 | inc eax |
306 | inc eax |
307 | mov [edi],ax |
307 | mov [edi],ax |
308 | 308 | ||
309 | shl eax,4 |
309 | shl eax,4 |
310 | add eax,edi |
310 | add eax,edi |
311 | 311 | ||
312 | mov bx,[0x3000] |
312 | mov bx,[0x3000] |
313 | mov [eax],bx |
313 | mov [eax],bx |
314 | 314 | ||
315 | add eax,2 ; save button id number |
315 | add eax,2 ; save button id number |
316 | mov bx,1 |
316 | mov bx,1 |
317 | mov [eax],bx |
317 | mov [eax],bx |
318 | add eax,2 ; x start |
318 | add eax,2 ; x start |
319 | xor ebx,ebx |
319 | xor ebx,ebx |
320 | cmp [skin_btn_close.left],0 |
320 | cmp [skin_btn_close.left],0 |
321 | jge _bCx_at_right |
321 | jge _bCx_at_right |
322 | mov ebx,[esp] |
322 | mov ebx,[esp] |
323 | mov ebx,[ebx+8] |
323 | mov ebx,[ebx+8] |
324 | inc ebx |
324 | inc ebx |
325 | _bCx_at_right: |
325 | _bCx_at_right: |
326 | add ebx,[skin_btn_close.left] |
326 | add ebx,[skin_btn_close.left] |
327 | mov [eax],bx |
327 | mov [eax],bx |
328 | add eax,2 ; x size |
328 | add eax,2 ; x size |
329 | mov ebx,[skin_btn_close.width] |
329 | mov ebx,[skin_btn_close.width] |
330 | dec ebx |
330 | dec ebx |
331 | mov [eax],bx |
331 | mov [eax],bx |
332 | add eax,2 ; y start |
332 | add eax,2 ; y start |
333 | mov ebx,[skin_btn_close.top] |
333 | mov ebx,[skin_btn_close.top] |
334 | mov [eax],bx |
334 | mov [eax],bx |
335 | add eax,2 ; y size |
335 | add eax,2 ; y size |
336 | mov ebx,[skin_btn_close.height] |
336 | mov ebx,[skin_btn_close.height] |
337 | dec ebx |
337 | dec ebx |
338 | mov [eax],bx |
338 | mov [eax],bx |
339 | 339 | ||
340 | ;* minimize button |
340 | ;* minimize button |
341 | mov edi,[0xfe88] |
341 | mov edi,[0xfe88] |
342 | movzx eax,word [edi] |
342 | movzx eax,word [edi] |
343 | cmp eax,1000 |
343 | cmp eax,1000 |
344 | jge no_skin_add_button |
344 | jge no_skin_add_button |
345 | inc eax |
345 | inc eax |
346 | mov [edi],ax |
346 | mov [edi],ax |
347 | 347 | ||
348 | shl eax,4 |
348 | shl eax,4 |
349 | add eax,edi |
349 | add eax,edi |
350 | 350 | ||
351 | mov bx,[0x3000] |
351 | mov bx,[0x3000] |
352 | mov [eax],bx |
352 | mov [eax],bx |
353 | 353 | ||
354 | add eax,2 ; save button id number |
354 | add eax,2 ; save button id number |
355 | mov bx,65535 ;999 |
355 | mov bx,65535 ;999 |
356 | mov [eax],bx |
356 | mov [eax],bx |
357 | add eax,2 ; x start |
357 | add eax,2 ; x start |
358 | xor ebx,ebx |
358 | xor ebx,ebx |
359 | cmp [skin_btn_minimize.left],0 |
359 | cmp [skin_btn_minimize.left],0 |
360 | jge _bMx_at_right |
360 | jge _bMx_at_right |
361 | mov ebx,[esp] |
361 | mov ebx,[esp] |
362 | mov ebx,[ebx+8] |
362 | mov ebx,[ebx+8] |
363 | inc ebx |
363 | inc ebx |
364 | _bMx_at_right: |
364 | _bMx_at_right: |
365 | add ebx,[skin_btn_minimize.left] |
365 | add ebx,[skin_btn_minimize.left] |
366 | mov [eax],bx |
366 | mov [eax],bx |
367 | add eax,2 ; x size |
367 | add eax,2 ; x size |
368 | mov ebx,[skin_btn_minimize.width] |
368 | mov ebx,[skin_btn_minimize.width] |
369 | dec ebx |
369 | dec ebx |
370 | mov [eax],bx |
370 | mov [eax],bx |
371 | add eax,2 ; y start |
371 | add eax,2 ; y start |
372 | mov ebx,[skin_btn_minimize.top] |
372 | mov ebx,[skin_btn_minimize.top] |
373 | mov [eax],bx |
373 | mov [eax],bx |
374 | add eax,2 ; y size |
374 | add eax,2 ; y size |
375 | mov ebx,[skin_btn_minimize.height] |
375 | mov ebx,[skin_btn_minimize.height] |
376 | dec ebx |
376 | dec ebx |
377 | mov [eax],bx |
377 | mov [eax],bx |
378 | 378 | ||
379 | no_skin_add_button: |
379 | no_skin_add_button: |
380 | 380 | ||
381 | add esp,4 |
381 | add esp,4 |
382 | popa |
382 | popa |
383 | 383 | ||
384 | ret 4 |
384 | ret 4 |