Subversion Repositories Kolibri OS

Rev

Rev 4486 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4475 leency 1
dword buf_data;
2
 
3
struct DrawBufer {
4
	int bufx, bufy, bufw, bufh, buf_line_h;
5
 
6
	void Init();
7
	void Fill();
8
	void Skew();
9
	void DrawBar();
10
	void AlignCenter();
11
	void AlignRight();
12
};
13
 
14
void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh, i_buf_line_h)
15
{
16
	bufx = i_bufx;
17
	bufy = i_bufy;
18
	bufw = i_bufw;
19
	bufh = i_bufh;
20
	buf_line_h = i_buf_line_h;
21
	free(buf_data);
22
	buf_data = malloc(bufw * buf_line_h +4 * 4 + 8); //+1 for good luck
23
	ESDWORD[buf_data] = bufw;
24
	ESDWORD[buf_data+4] = buf_line_h;
25
}
26
 
27
void DrawBufer::Fill(dword fill_color)
28
{
29
	int i;
30
	int max_i = bufw * buf_line_h + 4 * 4 + buf_data;
31
	for (i=buf_data; i
32
}
33
 
34
void DrawBufer::DrawBar(dword x, y, w, h, color)
35
{
36
	int i, j;
37
	for (j=0; j
38
	{
39
		for (i = y+j*bufw+x*4; i
40
	}
41
}
42
 
43
char shift[]={8,8,4,4};
44
void DrawBufer::Skew(dword x, y, w, h)
45
{
46
	int i, j;
47
	for (j=0; j<=3; j++)
48
	{
49
		for (i = y+j*bufw+x+w+h*4; i>y+j*bufw+x+h-12*4 ; i-=4)
50
								ESDWORD[buf_data+i+8] = ESDWORD[-shift[j]+buf_data+i+8];
51
	}
52
}
53
 
54
void DrawBufer::AlignRight(dword x,y,w,h, content_width)
55
{
56
	int i, j, l;
57
	int content_left = w - content_width / 2;
58
	for (j=0; j
59
	{
60
		for (i=j*w+w-x*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
61
		{
62
			ESDWORD[buf_data+8+i] >< ESDWORD[buf_data+8+l];
63
		}
64
	}
65
}
66
 
67
void DrawBufer::AlignCenter(dword x,y,w,h, content_width)
68
{
69
	int i, j, l;
70
	int content_left = w - content_width / 2;
71
	for (j=0; j
72
	{
73
		for (i=j*w+content_width+content_left*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
74
		{
75
			ESDWORD[buf_data+8+i] >< ESDWORD[buf_data+8+l];
76
		}
77
	}
78
}
79