Subversion Repositories Kolibri OS

Rev

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