Subversion Repositories Kolibri OS

Rev

Rev 4666 | Rev 5598 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4486 leency 1
 
4475 leency 2
dword zbuf_data;
5519 leency 3
4475 leency 4
 
5519 leency 5
 
4475 leency 6
	int bufx, bufy, bufw, bufh;
4666 leency 7
	int zbufx, zbufy, zbufw, zbufh;
5519 leency 8
	byte zoomf;
9
4475 leency 10
 
11
	void Show();
4666 leency 12
	void Fill();
4475 leency 13
	void Skew();
14
	void DrawBar();
15
	void PutPixel();
4666 leency 16
	void AlignCenter();
4475 leency 17
	void AlignRight();
18
	void Zoom2x();
5519 leency 19
};
4475 leency 20
21
 
4666 leency 22
{
4475 leency 23
	bufx = i_bufx;
24
	bufy = i_bufy;
25
	bufw = i_bufw;
26
	bufh = i_bufh;
27
	free(buf_data);
28
	buf_data = malloc(bufw * bufh * 4 + 8);
5519 leency 29
	ESDWORD[buf_data] = bufw;
4475 leency 30
	ESDWORD[buf_data+4] = bufh;
4666 leency 31
4475 leency 32
 
5519 leency 33
	{
34
		zbufx = bufx;
35
		zbufy = bufy;
36
		zbufw = bufw * zoomf;
37
		zbufh = bufh * zoomf;
38
		free(zbuf_data);
39
		zbuf_data = malloc(zbufw * zbufh * 4 + 8);
40
		ESDWORD[zbuf_data] = zbufw;
41
		ESDWORD[zbuf_data+4] = zbufh;
42
	}
43
}
4666 leency 44
45
 
4475 leency 46
{
47
	int i;
48
	int max_i = bufw * bufh * 4 + buf_data + 8;
4666 leency 49
	for (i=buf_data+8; i
4486 leency 50
}
4475 leency 51
52
 
53
{
54
	int i, j;
55
	for (j=0; j
56
	{
57
		for (i = y+j*bufw+x*4+8+buf_data; i
4486 leency 58
	}
4475 leency 59
}
60
61
 
4666 leency 62
{
63
	int pos = y*bufw+x*4+8+buf_data;
64
	ESDWORD[pos] = color;
65
}
66
67
 
4475 leency 68
void DrawBufer::Skew(dword x, y, w, h)
69
{
70
	int i, j;
71
	for (j=0; j<=3; j++)
72
	{
73
		for (i = y+j*bufw+x+w+h*4; i>y+j*bufw+x+h-12*4 ; i-=4)
74
								ESDWORD[buf_data+i+8] = ESDWORD[-shift[j]+buf_data+i+8];
75
	}
76
}
77
78
 
79
{
80
	int i, j, l;
81
	int content_left = w - content_width / 2;
82
	for (j=0; j
83
	{
84
		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)
85
		{
86
			ESDWORD[buf_data+8+i] >< ESDWORD[buf_data+8+l];
87
		}
88
	}
89
}
90
91
 
92
{
93
	int i, j, l;
94
	int content_left = w - content_width / 2;
95
	for (j=0; j
96
	{
97
		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)
98
		{
99
			ESDWORD[buf_data+8+i] >< ESDWORD[buf_data+8+l];
100
		}
101
	}
102
}
103
104
 
105
 
5519 leency 106
{
107
	int i, s;
108
	dword point_x, max_i, zline_w, s_inc;
109
4475 leency 110
 
5519 leency 111
	max_i = bufw * bufh * 4 + buf_data+8;
112
	s_inc = zoomf * 4;
113
	zline_w = zbufw * 4;
114
115
 
116
		ESDWORD[s] = ESDWORD[i];
117
		ESDWORD[s+4] = ESDWORD[i];
118
		ESDWORD[s+zline_w] = ESDWORD[i];
119
		ESDWORD[s+zline_w+4] = ESDWORD[i];
120
		if (zoomf==3)
121
		{
122
			ESDWORD[s+8] = ESDWORD[i];
123
			ESDWORD[zline_w+s+8] = ESDWORD[i];
124
			ESDWORD[zline_w*2+s] = ESDWORD[i];
125
			ESDWORD[zline_w*2+s+4] = ESDWORD[i];
126
			ESDWORD[zline_w*2+s+8] = ESDWORD[i];
127
		}
128
129
 
130
		if (point_x >= bufw)
131
		{
132
			s += zoomf - 1 * zline_w;
133
			point_x = 0;
134
		}
135
	}
136
}
137
138
 
139
 
140
{
141
	if (zoomf == 1)
142
	{
143
		PutPaletteImage(buf_data+8, bufw, bufh, bufx, bufy, 32, 0);
144
	}
145
	else
146
	{
147
		Zoom2x();
148
		PutPaletteImage(zbuf_data+8, zbufw, zbufh, zbufx, zbufy, 32, 0);
149
	}
150
}
151