Subversion Repositories Kolibri OS

Rev

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

Rev 5730 Rev 5736
Line 10... Line 10...
10
#endif
10
#endif
Line 11... Line 11...
11
 
11
 
12
:struct FONT
12
:struct FONT
13
{
13
{
-
 
14
	byte width,height,offsetLine;
14
	byte width,height,offsetLine;
15
	dword file_size;
15
	word block;
16
	word block;
-
 
17
	dword data;
16
	dword data;
18
	dword begin;
17
	dword size_file;
19
	dword size_file;
18
	byte load(...);
20
	byte load(...);
19
	byte symbol(word x,y;byte s;dword c);
21
	byte symbol(word x,y;byte s;dword c);
20
	dword text(word x,y;dword text,c);
22
	dword text(word x,y;dword text,c;byte size);
-
 
23
	dword textarea(word x,y;dword text,c;byte size);
21
	dword textarea(word x,y;dword text,c);
24
	byte changeSIZE(byte size);
22
};
25
};
-
 
26
FONT font = 0;
-
 
27
:byte FONT::changeSIZE(byte size)
-
 
28
{
-
 
29
	dword TMP_DATA;
-
 
30
	dword ofs;
-
 
31
	byte s;
-
 
32
	IF(size<9) size = 8;
-
 
33
	IF(size>45)size = 45;
-
 
34
		s = size-8;
-
 
35
		data = begin;
-
 
36
		TMP_DATA = data;
-
 
37
		TMP_DATA +=s*4;
-
 
38
		ofs = DSDWORD[TMP_DATA];
-
 
39
		IF(ofs==-1)return false;
-
 
40
		data += ofs;
-
 
41
		data += 156;
-
 
42
		TMP_DATA = data;
-
 
43
		file_size = DSDWORD[TMP_DATA];
-
 
44
		TMP_DATA += file_size;
-
 
45
		TMP_DATA--;
-
 
46
		height = DSBYTE[TMP_DATA];
-
 
47
		TMP_DATA--;
-
 
48
		width =  DSBYTE[TMP_DATA];
-
 
49
		block = math.ceil(height*width/32);
-
 
50
		return true;
23
FONT font = 0;
51
}
24
:dword FONT::text(word x,y;dword text1,c)
52
:dword FONT::text(word x,y;dword text1,c;byte size)
25
{
53
{
-
 
54
	dword len=0;
-
 
55
	if(size)if(!changeSIZE(size))return 0;
26
	dword len=0;
56
	
27
	WHILE(DSBYTE[text1])
57
	WHILE(DSBYTE[text1])
28
	{
58
	{
29
		len += symbol(x+len,y,DSBYTE[text1],c);
59
		len += symbol(x+len,y,DSBYTE[text1],c);
30
		text1++;
60
		text1++;
31
	}
61
	}
32
	return len;
62
	return len;
33
}
63
}
34
:dword FONT::textarea(word x,y;dword text1,c)
64
:dword FONT::textarea(word x,y;dword text1,c;byte size)
35
{
65
{
-
 
66
	dword len=0;
36
	dword len=0;
67
	if(size)if(!changeSIZE(size))return 0;
37
	WHILE(DSBYTE[text1])
68
	WHILE(DSBYTE[text1])
38
	{
69
	{
39
		IF(DSBYTE[text1]=='\r'){ y+=height; len=0;}
70
		IF(DSBYTE[text1]=='\r'){ y+=height; len=0;}
40
		ELSE	len += symbol(x+len,y,DSBYTE[text1],c);
71
		ELSE	len += symbol(x+len,y,DSBYTE[text1],c);
Line 48... Line 79...
48
	dword tmp,_;
79
        dword tmp,_;
49
	dword iii;
80
        dword iii;
50
	byte rw=0;
81
        byte rw=0;
51
	IF(offsetLine)y+=offsetLine;
82
        IF(offsetLine)y+=offsetLine;
52
	IF(s==32)return width/4;
83
        IF(s==32)return width/4;
-
 
84
		IF(s==9)return width;
53
	yi = 0;
85
        yi = 0;
54
	iii = 0;
86
        iii = 0;
55
	tmp = 4*block*s;
87
        tmp = 4*block*s;
56
	tmp +=data;
88
        tmp +=data;
57
	while(yi
89
        while(yi
Line 81... Line 113...
81
{
113
{
82
	dword tmp;
114
	dword tmp;
83
	IF(data)free(data);
115
	IF(data)free(data);
84
	tmp = io.read(path);
116
	tmp = io.read(path);
85
	data = tmp;
117
	data = tmp;
-
 
118
	begin = data;
86
	size_file = io.FILES_SIZE;
119
	size_file = io.FILES_SIZE;
87
	tmp +=size_file;
120
	tmp +=size_file;
88
	tmp--;
121
	tmp--;
89
	height = DSBYTE[tmp];
122
	height = DSBYTE[tmp];
90
	tmp--;
123
	tmp--;