Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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