Subversion Repositories Kolibri OS

Rev

Rev 7154 | Rev 7156 | 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
{
7151 leency 3
 
7089 leency 4
	unsigned rows, columns;
7151 leency 5
	dword mas[32*32];
6
	dword img;
7155 leency 7
	void create();
7151 leency 8
	void set_pixel();
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
 
7155 leency 32
dword _image::get_image()
7089 leency 33
{
34
	int r=0, c=0;
35
	dword i;
36
 
7151 leency 37
	free(img);
38
	i = img = malloc(rows*columns*3);
7089 leency 39
 
40
	for (r = 0; r < rows; r++)
41
	{
42
		for (c = 0; c < columns; c++)
43
		{
7151 leency 44
			rgb.DwordToRgb(get_pixel(r,c));
7089 leency 45
			ESBYTE[i] = rgb.b;
46
			ESBYTE[i+1] = rgb.g;
47
			ESBYTE[i+2] = rgb.r;
48
			i += 3;
49
		}
50
	}
7151 leency 51
	return img;
7089 leency 52
}
53
 
7096 leency 54
enum {
7151 leency 55
	MOVE_LEFT,
56
	MOVE_RIGHT,
57
	MOVE_UP,
58
	MOVE_DOWN,
59
	FLIP_VER,
60
	FLIP_HOR,
61
	ROTE
7096 leency 62
};
7155 leency 63
void _image::move(int _direction)
7096 leency 64
{
65
	int r, c;
66
	dword first_element_data;
67
 
7154 leency 68
	switch(_direction)
7096 leency 69
	{
7154 leency 70
		case MOVE_LEFT:
71
				for (r = 0; r < rows; r++)
72
				{
73
					first_element_data = get_pixel(r, 0);
74
					for (c = 0; c < columns-1; c++) set_pixel(r, c, get_pixel(r, c+1));
75
					set_pixel(r, columns-1, first_element_data);
76
				}
77
				break;
78
		case MOVE_RIGHT:
79
				for (r = 0; r < rows; r++)
80
				{
81
					first_element_data = get_pixel(r, columns-1);
82
					for (c = columns-1; c > 0; c--) set_pixel(r, c, get_pixel(r, c-1));
83
					set_pixel(r, 0, first_element_data);
84
				}
85
				break;
86
		case MOVE_UP:
87
				for (c = 0; c < columns; c++)
88
				{
89
					first_element_data = get_pixel(0, c);
90
					for (r = 0; r < rows-1; r++) set_pixel(r, c, get_pixel(r+1, c));
91
					set_pixel(rows-1, c, first_element_data);
92
				}
93
				break;
94
		case MOVE_DOWN:
95
				for (c = 0; c < columns; c++)
96
				{
97
					first_element_data = get_pixel(rows-1, c);
98
					for (r = rows-1; r > 0; r--) set_pixel(r, c, get_pixel(r-1, c));
99
					set_pixel(0, c, first_element_data);
100
				}
101
				break;
102
		case FLIP_HOR:
103
				for (r = 0; r < rows; r++)
104
				{
105
					for (c = 0; c < columns/2; c++) {
106
						first_element_data = get_pixel(r, c);
107
						set_pixel(r, c, get_pixel(r, columns-c-1));
108
						set_pixel(r, columns-c-1, first_element_data);
109
					}
110
				}
111
				break;
112
		case FLIP_VER:
113
				for (c = 0; c < columns; c++)
114
				{
115
					for (r = 0; r < rows/2; r++) {
116
						first_element_data = get_pixel(r, c);
117
						set_pixel(r, c, get_pixel(rows-r-1, c));
118
						set_pixel(rows-r-1, c, first_element_data);
119
					}
120
				}
121
				break;
7096 leency 122
	}
123
}
7147 leency 124