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 |