Subversion Repositories Kolibri OS

Rev

Rev 5782 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5782 Rev 5783
Line 18... Line 18...
18
	byte TMP_WEIGHT;
18
	byte TMP_WEIGHT;
19
};
19
};
20
:struct FONT
20
:struct FONT
21
{
21
{
22
	__SIZE size;
22
	__SIZE size;
23
	byte width,height,offsetLine,r,g,b,weight,italic;
23
	byte r,g,b,weight,italic;
-
 
24
	byte width,height;
24
	byte encoding;
25
	byte encoding;
25
	dword color;
26
	dword color;
26
	dword file_size;
27
	dword file_size;
27
	dword buffer;
28
	dword buffer;
28
	dword buffer_size;
29
	dword buffer_size;
Line 36... Line 37...
36
	dword prepare(word x,y;dword text1);
37
	dword prepare(word x,y;dword text1);
37
	void prepare_buf(word x,y,w,h;dword text1);
38
	void prepare_buf(word x,y,w,h;dword text1);
38
	void show(word x,y);
39
	void show(word x,y);
39
	byte textcenter(word x,y,w,h;dword txt);
40
	byte textcenter(word x,y,w,h;dword txt);
40
	dword getsize(dword text1);
41
	dword getsize(dword text1);
41
	dword textarea(word x,y;dword text,c);
-
 
42
	byte changeSIZE();
42
	byte changeSIZE();
43
	void PixelRGB(word x,y);
43
	void PixelRGB(word x,y);
44
	//dword GetPixel(word x,y);
44
	//dword GetPixel(word x,y);
45
	byte no_bg_copy;
45
	byte no_bg_copy;
46
	dword bg_color;
46
	dword bg_color;
Line 49... Line 49...
49
/*
49
/*
50
:dword FONT::GetPixel(word x,y)
50
:dword FONT::GetPixel(word x,y)
51
{
51
{
52
	dword tmp = y*size.width*3;
52
	dword tmp = y*size.width*3;
53
	tmp += x*3 + buffer;
53
	tmp += x*3 + buffer;
54
	r = DSBYTE[tmp];
54
	r = DSBYTE[tmp]; tmp++;
55
	g = DSBYTE[tmp+1];
55
	g = DSBYTE[tmp]; tmp++;
56
	b = DSBYTE[tmp+2];
56
	b = DSBYTE[tmp];
57
}*/
57
}*/
58
:void FONT::PixelRGB(dword x,y)
58
:void FONT::PixelRGB(dword x,y)
59
{
59
{
60
	dword tmp = y*size.width*3;
60
	$push ebx 
61
	tmp += x*3 + buffer;
61
	EBX = y*size.width+x*3 + buffer;
62
	DSBYTE[tmp] = r;
62
	DSBYTE[EBX] = r; EBX++;
63
	DSBYTE[tmp+1] = g;
63
	DSBYTE[EBX] = g; EBX++;
64
	DSBYTE[tmp+2] = b;
64
	DSBYTE[EBX] = b;
-
 
65
	$pop ebx
65
}
66
}
66
:byte FONT::changeSIZE()
67
:byte FONT::changeSIZE()
67
{
68
{
68
	dword TMP_DATA;
69
	dword TMP_DATA;
69
	dword ofs;
70
	dword ofs;
70
	byte s;
-
 
71
	IF(size.text<9) size.text = 8;
71
	IF(size.text<9) size.text = 8;
72
	s = size.text-8;
-
 
73
	data = begin;
-
 
74
	TMP_DATA = data;
72
	TMP_DATA = data = begin;
75
	TMP_DATA +=s*4;
73
	TMP_DATA +=size.text-8*4;
76
	ofs = DSDWORD[TMP_DATA];
74
	ofs = DSDWORD[TMP_DATA];
77
	IF(ofs==-1)return false;
75
	IF(ofs==-1)return false;
78
	data += ofs;
-
 
79
	data += 156;
76
	data += ofs + 156;
80
	TMP_DATA = data;
77
	TMP_DATA = data;
81
	file_size = DSDWORD[TMP_DATA];
78
	file_size = DSDWORD[TMP_DATA];
82
	TMP_DATA += file_size;
79
	TMP_DATA = data + file_size;
83
	TMP_DATA--;
-
 
84
	height = DSBYTE[TMP_DATA];
80
	height = DSBYTE[TMP_DATA - 1];
85
	TMP_DATA--;
-
 
86
	width =  DSBYTE[TMP_DATA];
81
	width =  DSBYTE[TMP_DATA - 2];
87
	block = math.ceil(height*width/32);
82
	block = math.ceil(height*width/32);
88
	return true;
83
	return true;
89
}
84
}
90
:proc_info Form_SELF_FONTS;
-
 
91
:byte FONT::textcenter(word x,y,w,h;dword txt)
85
:byte FONT::textcenter(word x,y,w,h;dword txt)
92
{
86
{
93
	getsize(txt);
87
	getsize(txt);
94
	EDX = w/2;
88
	EDX = w/2;
95
	ECX = size.width/2;
89
	ECX = size.width/2;
Line 182... Line 176...
182
		IF(size.offset_x<0)size.offset_x = X;
176
		IF(size.offset_x<0)size.offset_x = X;
183
}
177
}
184
:dword FONT::prepare(word x,y;dword text1)
178
:dword FONT::prepare(word x,y;dword text1)
185
{
179
{
186
	signed len=0;
180
	signed len=0;
-
 
181
	proc_info Form_SELF_FONTS;
187
	dword c;
182
	dword c;
188
	c = color;
183
	c = color;
189
	IF(!text1)return false;
184
	IF(!text1)return false;
190
	IF(size.text)IF(!changeSIZE())return false;
185
	IF(size.text)IF(!changeSIZE())return false;
191
	GetProcessInfo(#Form_SELF_FONTS, SelfInfo); 
-
 
192
	IF(y>Form_SELF_FONTS.cheight) return false;
-
 
193
	IF(x>Form_SELF_FONTS.cwidth) return false;
186
	AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL;
194
	AX = c;
-
 
195
	r = AL;
-
 
196
	g = AH;
-
 
197
	c>>=16;
-
 
198
	AX = c;
-
 
199
	b = AL;
-
 
200
	getsize(text1);
187
	getsize(text1);
201
	y -= size.offset_y;
188
	y -= size.offset_y;
Line 202... Line 189...
202
	
189
	
203
	EDX = size.width*size.height*3;
190
	EDX = size.width*size.height*3;
Line 220... Line 207...
220
		{
207
		{
221
			ESDWORD[EDI] = EBX;
208
			ESDWORD[EDI] = EBX;
222
			$add edi,3
209
			$add edi,3
223
		}
210
		}
224
	}
211
	}
-
 
212
	ELSE
-
 
213
	{
-
 
214
		GetProcessInfo(#Form_SELF_FONTS, SelfInfo); 
225
	ELSE CopyScreen(buffer,x+Form_SELF_FONTS.left+5,y+Form_SELF_FONTS.top+GetSkinHeight(),size.width,size.height);
215
		CopyScreen(buffer,x+Form_SELF_FONTS.left+5,y+Form_SELF_FONTS.top+GetSkinHeight(),size.width,size.height);
-
 
216
	}
226
	len = size.offset_x;
217
	len = size.offset_x;
227
	WHILE(DSBYTE[text1])
218
	WHILE(DSBYTE[text1])
228
	{
219
	{
229
		IF(DSBYTE[text1]=='_') len--;
220
		IF(DSBYTE[text1]=='_') len--;
230
		len+=symbol(len,DSBYTE[text1]);
221
		len+=symbol(len,DSBYTE[text1]);
Line 257... Line 248...
257
			ShadowImage(i, 1, 1, 2);
248
			ShadowImage(i, 1, 1, 2);
258
			ShadowImage(i+3+line_w, 1, 1, 2);
249
			ShadowImage(i+3+line_w, 1, 1, 2);
259
		}
250
		}
260
	}
251
	}
261
}
252
}
262
:dword FONT::textarea(word x,y;dword text1,c;byte size)
-
 
263
{
-
 
264
	
-
 
265
}
-
 
266
 
-
 
267
:byte FONT::symbol(signed x;byte s)
253
:byte FONT::symbol(signed x;byte s)
268
{
254
{
269
        dword xi,yi;
255
        dword xi,yi;
270
        dword tmp,_;
256
        dword tmp,_;
271
        dword iii;
257
        dword iii;
Line 339... Line 325...
339
	signed len=0;
325
	signed len=0;
340
	dword c;
326
	dword c;
341
	c = color;
327
	c = color;
342
	IF(!text1)return;
328
	IF(!text1)return;
343
	IF(size.text)IF(!changeSIZE())return;
329
	IF(size.text)IF(!changeSIZE())return;
344
	GetProcessInfo(#Form_SELF_FONTS, SelfInfo); 
-
 
345
	AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL;
330
	AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL;
346
	getsize(text1);
331
	getsize(text1);
347
	y -= size.offset_y;
332
	y -= size.offset_y;
Line 348... Line 333...
348
	
333
	
349
	size.width = w;
334
	size.width = w;
350
	size.height = y;
335
	size.height = h;
351
	EDX = size.width*size.height*3;
336
	EDX = size.width*size.height*3;
352
	IF(!buffer_size)
337
	IF(!buffer_size)
353
	{
338
	{
354
		buffer_size = EDX;
339
		buffer_size = EDX;