Subversion Repositories Kolibri OS

Rev

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

Rev 4666 Rev 5519
Line 1... Line 1...
1
dword buf_data;
1
dword buf_data;
-
 
2
dword zbuf_data;
-
 
3
 
Line 2... Line 4...
2
 
4
 
3
struct DrawBufer {
5
struct DrawBufer {
-
 
6
	int bufx, bufy, bufw, bufh;
-
 
7
	int zbufx, zbufy, zbufw, zbufh;
Line 4... Line 8...
4
	int bufx, bufy, bufw, bufh;
8
	byte zoomf;
5
 
9
 
6
	void Init();
10
	void Init();
7
	void Show();
11
	void Show();
8
	void Fill();
12
	void Fill();
9
	void Skew();
13
	void Skew();
10
	void DrawBar();
14
	void DrawBar();
11
	void PutPixel();
15
	void PutPixel();
-
 
16
	void AlignCenter();
12
	void AlignCenter();
17
	void AlignRight();
Line 13... Line 18...
13
	void AlignRight();
18
	void Zoom2x();
14
};
19
};
15
 
20
 
16
void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh)
21
void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh)
17
{
22
{
18
	bufx = i_bufx;
23
	bufx = i_bufx;
19
	bufy = i_bufy;
24
	bufy = i_bufy;
20
	bufw = i_bufw; 
25
	bufw = i_bufw; 
21
	bufh = i_bufh;
26
	bufh = i_bufh;
22
	free(buf_data);
27
	free(buf_data);
23
	buf_data = malloc(bufw * bufh * 4 + 8); //+1 for good luck
-
 
Line 24... Line 28...
24
	ESDWORD[buf_data] = bufw;
28
	buf_data = malloc(bufw * bufh * 4 + 8);
25
	ESDWORD[buf_data+4] = bufh;
29
	ESDWORD[buf_data] = bufw;
-
 
30
	ESDWORD[buf_data+4] = bufh;
-
 
31
 
-
 
32
	if (zoomf != 1)
-
 
33
	{
-
 
34
		zbufx = bufx;
26
}
35
		zbufy = bufy;
-
 
36
		zbufw = bufw * zoomf;
-
 
37
		zbufh = bufh * zoomf;
-
 
38
		free(zbuf_data);
27
 
39
		zbuf_data = malloc(zbufw * zbufh * 4 + 8);
Line 28... Line 40...
28
void DrawBufer::Show()
40
		ESDWORD[zbuf_data] = zbufw;
29
{
41
		ESDWORD[zbuf_data+4] = zbufh;
30
	PutPaletteImage(buf_data+8, bufw, bufh, bufx, bufy, 32,0);
42
	}
Line 89... Line 101...
89
	}
101
	}
90
}
102
}
91
103
 
Line -... Line 104...
-
 
104
 
-
 
105
void DrawBufer::Zoom2x()
-
 
106
{
-
 
107
	int i, s;
-
 
108
	dword point_x, max_i, zline_w, s_inc;
-
 
109
 
-
 
110
	point_x = 0;
-
 
111
	max_i = bufw * bufh * 4 + buf_data+8;
-
 
112
	s_inc = zoomf * 4;
-
 
113
	zline_w = zbufw * 4;
-
 
114
 
-
 
115
	for (i=buf_data+8, s=zbuf_data+8; i
-
 
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
		point_x++;
-
 
130
		if (point_x >= bufw) 
-
 
131
		{
-
 
132
			s += zoomf - 1 * zline_w;
-
 
133
			point_x = 0;
-
 
134
		}
-
 
135
	}
-
 
136
}
Line -... Line 137...
-
 
137
 
-
 
138
 
-
 
139
void DrawBufer::Show()
-
 
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);