Subversion Repositories Kolibri OS

Rev

Rev 6169 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6169 Rev 6170
1
;----------------------------------------------------------------------
1
;----------------------------------------------------------------------
2
area:
2
area:
3
  .x      = 5	;345
3
  .x      = 5	;345
4
  .y      = 5	;20
4
  .y      = 5	;20
5
  .width  = 206
5
  .width  = 206
6
  .height = 191
6
  .height = 191
7
;--------------------------------------
7
;--------------------------------------
8
wnd1:
-
 
9
  .x      = area.x+49
-
 
10
  .y      = area.y+5
-
 
11
  .width  = 150
-
 
12
  .height = 90
-
 
13
;--------------------------------------
-
 
14
wnd2:
-
 
15
  .x      = area.x+35
-
 
16
  .y      = area.y+35
-
 
17
  .width  = 150
-
 
18
  .height = 90
-
 
19
;--------------------------------------
-
 
20
wnd3:
8
wnd3:
21
  .x      = area.x+21
9
  .x      = area.x+32
22
  .y      = area.y+65
10
  .y      = area.y+35
23
  .width  = 150
11
  .width  = 160
24
  .height = 90
12
  .height = 100
25
;--------------------------------------
13
;--------------------------------------
26
wnd4:
14
wnd4:
27
  .x      = area.x+7
15
  .x      = area.x+15
28
  .y      = area.y+95
16
  .y      = area.y+70
29
  .width  = 150
17
  .width  = 160
30
  .height = 90
18
  .height = 100
31
;--------------------------------------
19
;--------------------------------------
32
virtual at edi+SKIN_PARAMS.dtp.data
20
virtual at edi+SKIN_PARAMS.dtp.data
33
	dtp system_colors
21
	dtp system_colors
34
end virtual
22
end virtual
35
;----------------------------------------------------------------------
23
;----------------------------------------------------------------------
36
draw_skin:
24
draw_skin:
37
	mcall	13,,,0x00FFFFFF
25
	mcall	13,,,0x00FFFFFF
38
	mov	ebp,not_packed_area
26
	mov	ebp,not_packed_area
39
	mov	edi,[ebp+SKIN_HEADER.params]
27
	mov	edi,[ebp+SKIN_HEADER.params]
40
	add	edi,ebp
28
	add	edi,ebp
41
	mpack	ebx,wnd1.x,wnd1.width
-
 
42
	mpack	ecx,wnd1.y,wnd1.height
-
 
43
	mov	edx,[dtp.frame]
-
 
44
	call	draw_framerect
-
 
45
	mcall	13,,,dword[dtp.work]
-
 
46
	mov	eax,38
-
 
47
	mpack	ebx,wnd1.x+1,wnd1.x+wnd1.width-2
-
 
48
	mpack	ecx,wnd1.y+1,wnd1.y+1
-
 
49
	mov	edx,[dtp.grab]
-
 
50
	mov	esi,20
-
 
51
;--------------------------------------
-
 
52
@@:
-
 
53
	mcall
-
 
54
	call	dec_edx
-
 
55
	add	ecx,0x00010001
-
 
56
	dec	esi
-
 
57
	jnz	@b
-
 
58
 
-
 
59
	mov	edi,[ebp+SKIN_HEADER.params]
-
 
60
	add	edi,ebp
-
 
61
	mcall	4,,dword[dtp.grab_text],caption_text,caption_text.size
-
 
62
	mcall	8,,,0,[dtp.grab_button]
-
 
63
	mcall	4,,dword[dtp.grab_button_text],close_text,close_text.size
-
 
64
;----------------------------------------------------------------------
-
 
65
	mov	edi,[ebp+SKIN_HEADER.params]
-
 
66
	add	edi,ebp
-
 
67
	mpack	ebx,wnd2.x,wnd2.width
-
 
68
	mpack	ecx,wnd2.y,wnd2.height
-
 
69
	mov	edx,[dtp.frame]
-
 
70
	shr	edx,1
-
 
71
	and	edx,0x007F7F7F
-
 
72
	call	draw_framerect
-
 
73
	mpack	ebx,wnd2.x+4,wnd2.width-8
-
 
74
	mpack	ecx,wnd2.y+4,wnd2.height-8
-
 
75
	call	draw_framerect
-
 
76
	mcall	13,,,[dtp.frame]
-
 
77
	add	ecx,(wnd2.height-5)*65536
-
 
78
	mcall
-
 
79
	mcall	,,
-
 
80
	add	ebx,(wnd2.width-5)*65536
-
 
81
	mcall
-
 
82
	mcall	,,,dword[dtp.work]
-
 
83
 
-
 
84
	mov	eax,38
-
 
85
	mpack	ebx,wnd2.x+4,wnd2.x+wnd2.width-5
-
 
86
	mpack	ecx,wnd2.y+4,wnd2.y+4
-
 
87
	mov	edx,[dtp.grab]
-
 
88
	mov	esi,16
-
 
89
;--------------------------------------
-
 
90
@@:
-
 
91
	mcall
-
 
92
	call	dec_edx
-
 
93
	add	ecx,0x00010001
-
 
94
	dec	esi
-
 
95
	jnz	@b
-
 
96
 
-
 
97
	mov	edi,[ebp+SKIN_HEADER.params]
-
 
98
	add	edi,ebp
-
 
99
	mcall	4,,dword[dtp.grab_text],caption_text,caption_text.size
-
 
100
	mcall	8,,,0,[dtp.grab_button]
-
 
101
	mcall	4,,dword[dtp.grab_button_text],close_text,close_text.size
-
 
102
;----------------------------------------------------------------------
-
 
103
	mov	edi,[ebp+SKIN_HEADER.params]
-
 
104
	add	edi,ebp
-
 
105
	mpack	ebx,wnd3.x,wnd3.width
29
	mpack	ebx,wnd3.x,wnd3.width
106
	mpack	ecx,wnd3.y,wnd3.height
30
	mpack	ecx,wnd3.y,wnd3.height
107
	mov	edx,[edi+SKIN_PARAMS.colors_1.outer]
31
	mov	edx,[edi+SKIN_PARAMS.colors_1.outer]
108
	call	draw_framerect
32
	call	draw_framerect
109
	mpack	ebx,wnd3.x+4,wnd3.width-8
33
	mpack	ebx,wnd3.x+4,wnd3.width-8
110
	mpack	ecx,wnd3.y+4,wnd3.height-8
34
	mpack	ecx,wnd3.y+4,wnd3.height-8
111
	mov	edx,[edi+SKIN_PARAMS.colors_1.inner]
35
	mov	edx,[edi+SKIN_PARAMS.colors_1.inner]
112
	call	draw_framerect
36
	call	draw_framerect
113
	mcall	13,,,[edi+SKIN_PARAMS.colors_1.frame]
37
	mcall	13,,,[edi+SKIN_PARAMS.colors_1.frame]
114
	add	ecx,(wnd3.height-5)*65536
38
	add	ecx,(wnd3.height-5)*65536
115
	mcall
39
	mcall
116
	mcall	,,
40
	mcall	,,
117
	add	ebx,(wnd3.width-5)*65536
41
	add	ebx,(wnd3.width-5)*65536
118
	mcall
42
	mcall
119
	mcall	,,,dword[dtp.work]
43
	mcall	,,,dword[dtp.work]
120
 
44
 
121
	mov	eax,0x00000001 ; left, inactive
45
	mov	eax,0x00000001 ; left, inactive
122
	call	find_bitmap
46
	call	find_bitmap
123
	mcall	7,,,
47
	mcall	7,,,
124
 
48
 
125
	pushd	[ebx-8]
49
	pushd	[ebx-8]
126
	mov	eax,0x00000003 ; base, inactive
50
	mov	eax,0x00000003 ; base, inactive
127
	call	find_bitmap
51
	call	find_bitmap
128
	pop	edx
52
	pop	edx
129
	mov	esi,wnd3.x+wnd3.width-1
53
	mov	esi,wnd3.x+wnd3.width-1
130
	sub	esi,edx
54
	sub	esi,edx
131
	shl	edx,16
55
	shl	edx,16
132
	add	edx,wnd3.x*65536+wnd3.y
56
	add	edx,wnd3.x*65536+wnd3.y
133
	mcall	7
57
	mcall	7
134
;--------------------------------------
58
;--------------------------------------
135
@@:
59
@@:
136
	rol	edx,16
60
	rol	edx,16
137
	add	dx,[ebx-8]
61
	add	dx,[ebx-8]
138
	cmp	dx,si
62
	cmp	dx,si
139
	ja	@f
63
	ja	@f
140
 
64
 
141
	rol	edx,16
65
	rol	edx,16
142
	mcall	7
66
	mcall	7
143
	jmp	@b
67
	jmp	@b
144
;--------------------------------------
68
;--------------------------------------
145
@@:
69
@@:
146
	mov	eax,0x00000002 ; oper, inactive
70
	mov	eax,0x00000002 ; oper, inactive
147
	call	find_bitmap
71
	call	find_bitmap
148
	mov	edx,ecx
72
	mov	edx,ecx
149
	shr	edx,16
73
	shr	edx,16
150
	neg	edx
74
	neg	edx
151
	shl	edx,16
75
	shl	edx,16
152
	add	edx,(wnd3.x+wnd3.width)*65536+wnd3.y
76
	add	edx,(wnd3.x+wnd3.width)*65536+wnd3.y
153
	mcall	7
77
	mcall	7
154
 
78
 
155
	mov	ebp,not_packed_area
79
	mov	ebp,not_packed_area
156
	mov	edi,[ebp+SKIN_HEADER.params]
80
	mov	edi,[ebp+SKIN_HEADER.params]
157
	add	edi,ebp
81
	add	edi,ebp
158
	mov	eax,dword[edi+SKIN_PARAMS.margin.left-2]
82
	mov	eax,dword[edi+SKIN_PARAMS.margin.left-2]
159
	mov	ax,word[edi+SKIN_PARAMS.skin_height]
83
	mov	ax,word[edi+SKIN_PARAMS.skin_height]
160
	sub	ax,[edi+SKIN_PARAMS.margin.bottom]
84
	sub	ax,[edi+SKIN_PARAMS.margin.bottom]
161
	shr	ax,1
85
	shr	ax,1
162
	add	ax,[edi+SKIN_PARAMS.margin.top]
86
	add	ax,[edi+SKIN_PARAMS.margin.top]
163
	add	ax,-4
87
	add	ax,-9
164
	push	eax
88
	push	eax
165
	lea	ebx,[eax+wnd3.x*65536+wnd3.y]
89
	lea	ebx,[eax+wnd3.x*65536+wnd3.y]
-
 
90
	mov ecx,dword[dtp.grab_text]
-
 
91
	add ecx,0x10000000
166
	mcall	4,,dword[dtp.grab_text],caption_text,caption_text.size
92
	mcall	4,,,caption_text,caption_text.size
167
;---------------------------------------------------------
93
;---------------------------------------------------------
168
	mov	edi,[ebp+SKIN_HEADER.params]
94
	mov	edi,[ebp+SKIN_HEADER.params]
169
	add	edi,ebp
95
	add	edi,ebp
170
	mpack	ebx,wnd4.x,wnd4.width
96
	mpack	ebx,wnd4.x,wnd4.width
171
	mpack	ecx,wnd4.y,wnd4.height
97
	mpack	ecx,wnd4.y,wnd4.height
172
	mov	edx,[edi+SKIN_PARAMS.colors.outer]
98
	mov	edx,[edi+SKIN_PARAMS.colors.outer]
173
	call	draw_framerect
99
	call	draw_framerect
174
	mpack	ebx,wnd4.x+4,wnd4.width-8
100
	mpack	ebx,wnd4.x+4,wnd4.width-8
175
	mpack	ecx,wnd4.y+4,wnd4.height-8
101
	mpack	ecx,wnd4.y+4,wnd4.height-8
176
	mov	edx,[edi+SKIN_PARAMS.colors.inner]
102
	mov	edx,[edi+SKIN_PARAMS.colors.inner]
177
	call	draw_framerect
103
	call	draw_framerect
178
	mcall	13,,,[edi+SKIN_PARAMS.colors.frame]
104
	mcall	13,,,[edi+SKIN_PARAMS.colors.frame]
179
	add	ecx,(wnd4.height-5)*65536
105
	add	ecx,(wnd4.height-5)*65536
180
	mcall
106
	mcall
181
	mcall	,,
107
	mcall	,,
182
	add	ebx,(wnd4.width-5)*65536
108
	add	ebx,(wnd4.width-5)*65536
183
	mcall
109
	mcall
184
	mcall	,,,dword[dtp.work]
110
	mcall	,,,dword[dtp.work]
185
 
111
 
186
	mov	eax,0x00010001 ; left, inactive
112
	mov	eax,0x00010001 ; left, inactive
187
	call	find_bitmap
113
	call	find_bitmap
188
	mcall	7,,,
114
	mcall	7,,,
189
 
115
 
190
	pushd	[ebx-8]
116
	pushd	[ebx-8]
191
	mov	eax,0x00010003 ; base, inactive
117
	mov	eax,0x00010003 ; base, inactive
192
	call	find_bitmap
118
	call	find_bitmap
193
	pop	edx
119
	pop	edx
194
	mov	esi,wnd4.x+wnd4.width-1
120
	mov	esi,wnd4.x+wnd4.width-1
195
	sub	esi,edx
121
	sub	esi,edx
196
	shl	edx,16
122
	shl	edx,16
197
	add	edx,wnd4.x*65536+wnd4.y
123
	add	edx,wnd4.x*65536+wnd4.y
198
	mcall	7
124
	mcall	7
199
;--------------------------------------
125
;--------------------------------------
200
@@:
126
@@:
201
	rol	edx,16
127
	rol	edx,16
202
	add	dx,[ebx-8]
128
	add	dx,[ebx-8]
203
	cmp	dx,si
129
	cmp	dx,si
204
	ja	@f
130
	ja	@f
205
 
131
 
206
	rol	edx,16
132
	rol	edx,16
207
	mcall	7
133
	mcall	7
208
	jmp	@b
134
	jmp	@b
209
;--------------------------------------
135
;--------------------------------------
210
@@:
136
@@:
211
	mov	eax,0x00010002 ; oper, inactive
137
	mov	eax,0x00010002 ; oper, inactive
212
	call	find_bitmap
138
	call	find_bitmap
213
	mov	edx,ecx
139
	mov	edx,ecx
214
	shr	edx,16
140
	shr	edx,16
215
	neg	edx
141
	neg	edx
216
	shl	edx,16
142
	shl	edx,16
217
	add	edx,(wnd4.x+wnd4.width)*65536+wnd4.y
143
	add	edx,(wnd4.x+wnd4.width)*65536+wnd4.y
218
	mcall	7
144
	mcall	7
219
 
145
 
220
	mov	ebp,not_packed_area
146
	mov	ebp,not_packed_area
221
	mov	edi,[ebp+SKIN_HEADER.params]
147
	mov	edi,[ebp+SKIN_HEADER.params]
222
	add	edi,ebp
148
	add	edi,ebp
223
	pop	eax
149
	pop	eax
224
	lea	ebx,[eax+wnd4.x*65536+wnd4.y]
150
	lea	ebx,[eax+wnd4.x*65536+wnd4.y]
-
 
151
	mov ecx,dword[dtp.grab_text]
-
 
152
	add ecx,0x10000000
225
	mcall	4,,dword[dtp.grab_text],caption_text,caption_text.size
153
	mcall	4,,,caption_text,caption_text.size
226
;----------------------------------------------------------------------
154
;----------------------------------------------------------------------
227
	mov	edi,[ebp+SKIN_HEADER.buttons]
155
	mov	edi,[ebp+SKIN_HEADER.buttons]
228
	add	edi,ebp
156
	add	edi,ebp
229
;--------------------------------------
157
;--------------------------------------
230
.lp1:
158
.lp1:
231
	cmp	dword[edi],0
159
	cmp	dword[edi],0
232
	je	.lp2
160
	je	.lp2
233
 
161
 
234
	mov	ebx,dword[edi+SKIN_BUTTONS.left-2]
162
	mov	ebx,dword[edi+SKIN_BUTTONS.left-2]
235
	mov	bx,[edi+SKIN_BUTTONS.width]
163
	mov	bx,[edi+SKIN_BUTTONS.width]
236
	mov	ecx,dword[edi+SKIN_BUTTONS.top-2]
164
	mov	ecx,dword[edi+SKIN_BUTTONS.top-2]
237
	mov	cx,[edi+SKIN_BUTTONS.height]
165
	mov	cx,[edi+SKIN_BUTTONS.height]
238
	add	ebx,(wnd4.x+wnd4.width)*65536
166
	add	ebx,(wnd4.x+wnd4.width)*65536
239
	add	ecx,wnd4.y*65536
167
	add	ecx,wnd4.y*65536
240
	dec	ebx
168
	dec	ebx
241
	dec	ecx
169
	dec	ecx
242
	mcall	8,,,0x40000000
170
	mcall	8,,,0x40000000
243
	add	edi,12
171
	add	edi,12
244
	jmp	.lp1
172
	jmp	.lp1
245
;--------------------------------------
173
;--------------------------------------
246
.lp2:
174
.lp2:
247
	mov	edi,[ebp+SKIN_HEADER.params]
175
	mov	edi,[ebp+SKIN_HEADER.params]
248
	add	edi,ebp
176
	add	edi,ebp
249
	mpack	ebx,wnd4.x+10,wnd4.y+10
177
	mpack	ebx,wnd4.x+10,wnd4.y+10
250
	add	bx,word[edi+SKIN_PARAMS.skin_height]
178
	add	bx,word[edi+SKIN_PARAMS.skin_height]
251
	mcall	4,,[dtp.work_text],window_text,window_text.size
179
	mcall	4,,[dtp.work_text],window_text,window_text.size
252
 
180
 
253
	mov	ecx,[edi+SKIN_PARAMS.skin_height]
181
	mov	ecx,[edi+SKIN_PARAMS.skin_height]
254
	shl	ecx,16
182
	shl	ecx,16
255
	add	ecx,(wnd4.y+8)*65536+10
183
	add	ecx,(wnd4.y+8)*65536+10
256
	mcall	13,
184
	mcall	13,
257
			(wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
185
			(wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
258
 
186
 
259
	add	ecx,25*65536+8
187
	add	ecx,25*65536+10
260
	mcall	8,
188
	mcall	8,
261
			button_text.size*6+11>,,0,[dtp.work_button]
189
			button_text.size*6+11>,,0,[dtp.work_button]
262
 
190
 
263
	shr	ecx,16
191
	shr	ecx,16
264
	mov	bx,cx
192
	mov	bx,cx
265
	add	ebx,0x00060006
193
	add	ebx,0x00060007
266
	mcall	4,,[dtp.work_button_text],button_text,button_text.size
194
	mcall	4,,[dtp.work_button_text],button_text,button_text.size
267
	ret
195
	ret
268
;---------------------------------------------------------------------
196
;---------------------------------------------------------------------
269
find_bitmap:
197
find_bitmap:
270
	mov	edi,[ebp+SKIN_HEADER.bitmaps]
198
	mov	edi,[ebp+SKIN_HEADER.bitmaps]
271
	add	edi,ebp
199
	add	edi,ebp
272
	xor	ebx,ebx
200
	xor	ebx,ebx
273
;--------------------------------------
201
;--------------------------------------
274
.lp1:
202
.lp1:
275
	cmp	dword[edi],0
203
	cmp	dword[edi],0
276
	je	.lp2
204
	je	.lp2
277
 
205
 
278
	cmp	dword[edi+0],eax
206
	cmp	dword[edi+0],eax
279
	jne	@f
207
	jne	@f
280
;--------------------------------------
208
;--------------------------------------
281
	mov	ebx,[edi+SKIN_BITMAPS._data]
209
	mov	ebx,[edi+SKIN_BITMAPS._data]
282
	add	ebx,ebp
210
	add	ebx,ebp
283
	mov	ecx,[ebx-2]
211
	mov	ecx,[ebx-2]
284
	mov	cx,[ebx+4]
212
	mov	cx,[ebx+4]
285
	add	ebx,8
213
	add	ebx,8
286
;--------------------------------------
214
;--------------------------------------
287
.lp2:
215
.lp2:
288
	ret
216
	ret
289
;--------------------------------------
217
;--------------------------------------
290
@@:
218
@@:
291
	add	edi,8
219
	add	edi,8
292
	jmp	.lp1
220
	jmp	.lp1
293
;----------------------------------------------------------------------
221
;----------------------------------------------------------------------
294
dec_edx:
222
dec_edx:
295
	sub	dl,4
223
	sub	dl,4
296
	jnc	@f
224
	jnc	@f
297
 
225
 
298
	xor	dl,dl
226
	xor	dl,dl
299
;--------------------------------------
227
;--------------------------------------
300
@@:
228
@@:
301
	sub	dh,4
229
	sub	dh,4
302
	jnc	@f
230
	jnc	@f
303
 
231
 
304
	xor	dh,dh
232
	xor	dh,dh
305
;--------------------------------------
233
;--------------------------------------
306
@@:
234
@@:
307
	rol	edx,16
235
	rol	edx,16
308
	sub	dl,4
236
	sub	dl,4
309
	jnc	@f
237
	jnc	@f
310
 
238
 
311
	xor	dl,dl
239
	xor	dl,dl
312
;--------------------------------------
240
;--------------------------------------
313
@@:
241
@@:
314
	rol	edx,16
242
	rol	edx,16
315
	ret
243
	ret
316
;---------------------------------------------------------------------
244
;---------------------------------------------------------------------
317
draw_framerect: ; ebx,ecx
245
draw_framerect: ; ebx,ecx
318
	push	ebx ecx
246
	push	ebx ecx
319
	add	bx,[esp+6]
247
	add	bx,[esp+6]
320
	mov	cx,[esp+2]
248
	mov	cx,[esp+2]
321
	dec	ebx
249
	dec	ebx
322
	mcall	38
250
	mcall	38
323
	add	cx,[esp]
251
	add	cx,[esp]
324
	rol	ecx,16
252
	rol	ecx,16
325
	add	cx,[esp]
253
	add	cx,[esp]
326
	sub	ecx,0x00010001
254
	sub	ecx,0x00010001
327
	mcall
255
	mcall
328
	mov	ebx,[esp+4]
256
	mov	ebx,[esp+4]
329
	mov	ecx,[esp]
257
	mov	ecx,[esp]
330
	mov	bx,[esp+6]
258
	mov	bx,[esp+6]
331
	add	cx,[esp+2]
259
	add	cx,[esp+2]
332
	dec	ecx
260
	dec	ecx
333
	mcall
261
	mcall
334
	add	bx,[esp+4]
262
	add	bx,[esp+4]
335
	rol	ebx,16
263
	rol	ebx,16
336
	add	bx,[esp+4]
264
	add	bx,[esp+4]
337
	sub	ebx,0x00010001
265
	sub	ebx,0x00010001
338
	mcall
266
	mcall
339
	add	esp,8
267
	add	esp,8
340
	ret
268
	ret
341
;----------------------------------------------------------------------
269
;----------------------------------------------------------------------
342
>
270
>
343
>
271
>