Subversion Repositories Kolibri OS

Rev

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