Subversion Repositories Kolibri OS

Rev

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

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