Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
7155 leency 1
struct _image
7089 leency 2
{
3
	unsigned rows, columns;
7151 leency 4
	dword mas[32*32];
5
	dword img;
7155 leency 6
	void create();
7151 leency 7
	void set_pixel();
7156 leency 8
	void set_image();
7151 leency 9
	dword get_pixel();
7089 leency 10
	dword get_image();
7096 leency 11
	void move();
7150 leency 12
};
7089 leency 13
 
7155 leency 14
void _image::create(int _rows, _columns)
7089 leency 15
{
7155 leency 16
	int i;
17
	rows = _rows;
18
	columns = _columns;
19
	for (i = 0; i < columns*rows; i++) mas[i]=0xBFCAD2;
20
}
21
 
22
void _image::set_pixel(int _r, _c, _color)
23
{
7151 leency 24
	mas[columns*_r + _c] = _color;
7089 leency 25
}
26
 
7155 leency 27
dword _image::get_pixel(int _r, _c)
7089 leency 28
{
7151 leency 29
	return mas[columns*_r + _c];
7089 leency 30
}
31
 
7156 leency 32
void _image::set_image(dword _inbuf)
33
{
34
	dword i;
35
	for (i = 0; i < columns*rows; i++;)
36
	{
37
		mas[i] = ESDWORD[i*4+_inbuf] & 0x00FFFFFF;
38
	}
39
}
40
 
7155 leency 41
dword _image::get_image()
7089 leency 42
{
43
	int r=0, c=0;
44
	dword i;
45
 
7151 leency 46
	free(img);
47
	i = img = malloc(rows*columns*3);
7089 leency 48
 
49
	for (r = 0; r < rows; r++)
50
		for (c = 0; c < columns; c++)
51
		{
7151 leency 52
			rgb.DwordToRgb(get_pixel(r,c));
7089 leency 53
			ESBYTE[i] = rgb.b;
54
			ESBYTE[i+1] = rgb.g;
55
			ESBYTE[i+2] = rgb.r;
56
			i += 3;
57
		}
7151 leency 58
	return img;
7089 leency 59
}
60
 
7096 leency 61
enum {
7151 leency 62
	MOVE_LEFT,
63
	MOVE_RIGHT,
64
	MOVE_UP,
65
	MOVE_DOWN,
66
	FLIP_VER,
67
	FLIP_HOR,
68
	ROTE
7096 leency 69
};
7155 leency 70
void _image::move(int _direction)
7096 leency 71
{
72
	int r, c;
73
	dword first_element_data;
74
 
7154 leency 75
	switch(_direction)
7096 leency 76
	{
7154 leency 77
		case MOVE_LEFT:
78
				for (r = 0; r < rows; r++)
79
				{
80
					first_element_data = get_pixel(r, 0);
81
					for (c = 0; c < columns-1; c++) set_pixel(r, c, get_pixel(r, c+1));
82
					set_pixel(r, columns-1, first_element_data);
83
				}
84
				break;
85
		case MOVE_RIGHT:
86
				for (r = 0; r < rows; r++)
87
				{
88
					first_element_data = get_pixel(r, columns-1);
89
					for (c = columns-1; c > 0; c--) set_pixel(r, c, get_pixel(r, c-1));
90
					set_pixel(r, 0, first_element_data);
91
				}
92
				break;
93
		case MOVE_UP:
94
				for (c = 0; c < columns; c++)
95
				{
96
					first_element_data = get_pixel(0, c);
97
					for (r = 0; r < rows-1; r++) set_pixel(r, c, get_pixel(r+1, c));
98
					set_pixel(rows-1, c, first_element_data);
99
				}
100
				break;
101
		case MOVE_DOWN:
102
				for (c = 0; c < columns; c++)
103
				{
104
					first_element_data = get_pixel(rows-1, c);
105
					for (r = rows-1; r > 0; r--) set_pixel(r, c, get_pixel(r-1, c));
106
					set_pixel(0, c, first_element_data);
107
				}
108
				break;
109
		case FLIP_HOR:
110
				for (r = 0; r < rows; r++)
111
					for (c = 0; c < columns/2; c++) {
112
						first_element_data = get_pixel(r, c);
113
						set_pixel(r, c, get_pixel(r, columns-c-1));
114
						set_pixel(r, columns-c-1, first_element_data);
115
					}
116
				break;
117
		case FLIP_VER:
118
				for (c = 0; c < columns; c++)
119
					for (r = 0; r < rows/2; r++) {
120
						first_element_data = get_pixel(r, c);
121
						set_pixel(r, c, get_pixel(rows-r-1, c));
122
						set_pixel(rows-r-1, c, first_element_data);
123
					}
124
				break;
7096 leency 125
	}
126
}
7147 leency 127