Subversion Repositories Kolibri OS

Rev

Rev 7155 | Rev 7190 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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