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 |