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 |