Rev 8080 | Rev 8084 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8080 | Rev 8081 | ||
---|---|---|---|
1 | #include |
1 | #include |
2 | #include |
2 | #include |
3 | #include |
3 | #include |
4 | #include |
4 | #include |
5 | 5 | ||
6 | #include "kolibri_libimg.h" |
6 | #include "kolibri_libimg.h" |
7 | 7 | ||
8 | /* |
8 | /* |
9 | EVENTS LOOK LIKE IN C-- |
9 | EVENTS LOOK LIKE IN C-- |
10 | */ |
10 | */ |
11 | 11 | ||
12 | #define evReDraw 1 |
12 | #define evReDraw 1 |
13 | #define evKey 2 |
13 | #define evKey 2 |
14 | #define evButton 3 |
14 | #define evButton 3 |
15 | 15 | ||
16 | 16 | ||
17 | 17 | ||
18 | #define _size 4 |
18 | #define _size 4 |
19 | 19 | ||
20 | #define bs 44 |
20 | #define bs 44 |
21 | 21 | ||
22 | 22 | ||
23 | int field[_size][_size] = { |
23 | int field[_size][_size] = { |
24 | {0, 0, 0, 1}, |
24 | {0, 0, 0, 1}, |
25 | {0, 0, 1, 0}, |
25 | {0, 0, 1, 0}, |
26 | {0, 0, 0, 1}, |
26 | {0, 0, 0, 1}, |
27 | {1, 0, 0, 0} |
27 | {1, 0, 0, 0} |
28 | }; |
28 | }; |
29 | 29 | ||
30 | char* title = "Fridge v0.1"; |
30 | char* title = "Fridge v0.1"; |
31 | 31 | ||
32 | // PICTURES LOADING CODE |
32 | // PICTURES LOADING CODE |
33 | 33 | ||
34 | char temp_path[4096]; |
34 | char temp_path[4096]; |
35 | char* HOR; |
35 | char* HOR; |
36 | char* VER; |
36 | char* VER; |
37 | 37 | ||
38 | 38 | ||
39 | char* load_file_inmem(char* fname, int32_t* read_sz) |
39 | char* load_file_inmem(char* fname, int32_t* read_sz) |
40 | { |
40 | { |
41 | FILE *f = fopen(fname, "rb"); |
41 | FILE *f = fopen(fname, "rb"); |
42 | if (!f) { |
42 | if (!f) { |
43 | exit(1); |
43 | exit(1); |
44 | } |
44 | } |
45 | if (fseek(f, 0, SEEK_END)) { |
45 | if (fseek(f, 0, SEEK_END)) { |
46 | exit(1); |
46 | exit(1); |
47 | } |
47 | } |
48 | int filesize = ftell(f); |
48 | int filesize = ftell(f); |
49 | rewind(f); |
49 | rewind(f); |
50 | char* fdata = malloc(filesize); |
50 | char* fdata = malloc(filesize); |
51 | if(!fdata) { |
51 | if(!fdata) { |
52 | exit(1); |
52 | exit(1); |
53 | } |
53 | } |
54 | *read_sz = fread(fdata, 1, filesize, f); |
54 | *read_sz = fread(fdata, 1, filesize, f); |
55 | if (ferror(f)) { |
55 | if (ferror(f)) { |
56 | exit(1); |
56 | exit(1); |
57 | } |
57 | } |
58 | fclose(f); |
58 | fclose(f); |
59 | 59 | ||
60 | return fdata; |
60 | return fdata; |
61 | } |
61 | } |
62 | 62 | ||
63 | 63 | ||
64 | 64 | ||
65 | 65 | ||
66 | void load_pict() { |
66 | void load_pict() { |
67 | const int icon_rgb_size = bs*bs; |
67 | const int icon_rgb_size = bs*bs; |
68 | char *image_data, |
68 | char *image_data, |
69 | *filedata; |
69 | *filedata; |
70 | 70 | ||
71 | strcpy(temp_path, "h.png"); |
71 | strcpy(temp_path, "h.png"); |
72 | 72 | ||
73 | int32_t read_bytes; |
73 | int32_t read_bytes; |
74 | filedata = load_file_inmem(temp_path, &read_bytes); |
74 | filedata = load_file_inmem(temp_path, &read_bytes); |
75 | HOR = malloc(icon_rgb_size * 3); |
75 | HOR = malloc(icon_rgb_size * 3); |
76 | 76 | ||
77 | image_data = img_decode(filedata, read_bytes, 0); |
77 | image_data = img_decode(filedata, read_bytes, 0); |
78 | 78 | ||
79 | img_to_rgb2(image_data, HOR); |
79 | img_to_rgb2(image_data, HOR); |
80 | 80 | ||
81 | 81 | ||
82 | strcpy(temp_path, "v.png"); |
82 | strcpy(temp_path, "v.png"); |
83 | 83 | ||
84 | filedata = load_file_inmem(temp_path, &read_bytes); |
84 | filedata = load_file_inmem(temp_path, &read_bytes); |
85 | VER = malloc(icon_rgb_size * 3); |
85 | VER = malloc(icon_rgb_size * 3); |
86 | 86 | ||
87 | image_data = img_decode(filedata, read_bytes, 0); |
87 | image_data = img_decode(filedata, read_bytes, 0); |
88 | 88 | ||
89 | img_to_rgb2(image_data, VER); |
89 | img_to_rgb2(image_data, VER); |
90 | 90 | ||
91 | img_destroy(image_data); |
91 | img_destroy(image_data); |
92 | free(filedata); |
92 | free(filedata); |
93 | } |
93 | } |
94 | 94 | ||
95 | 95 | ||
96 | 96 | ||
97 | 97 | ||
98 | // END OF PIC LOAD CODE |
98 | // END OF PIC LOAD CODE |
99 | 99 | ||
100 | 100 | ||
101 | void redraw_buttons() { |
101 | void redraw_buttons() { |
102 | for (int j = 5, yy = 0; yy<_size; j+=bs, yy++) |
102 | for (int j = 5, yy = 0; yy<_size; j+=bs, yy++) |
103 | for (int i = 15, xx = 0; xx<_size; i+=bs, xx++) |
103 | for (int i = 15, xx = 0; xx<_size; i+=bs, xx++) |
104 | { |
104 | { |
105 | define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, 0xbbbbbb); |
105 | define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, 0xbbbbbb); |
106 | 106 | ||
107 | if (field[yy][xx]) draw_bitmap(VER, i, j, bs, bs); |
107 | if (field[yy][xx]) draw_bitmap(VER, i, j, bs, bs); |
108 | else draw_bitmap(HOR, i, j, bs, bs); |
108 | else draw_bitmap(HOR, i, j, bs, bs); |
109 | } |
109 | } |
110 | } |
110 | } |
111 | 111 | ||
112 | void draw_window(){ |
112 | void draw_window(){ |
113 | BeginDraw(); |
113 | BeginDraw(); |
114 | DrawWindow(215,100,220, 220,title,0xbbbbbb,0x34); |
114 | DrawWindow(215,100,220, 220,title,0xbbbbbb,0x34); |
115 | redraw_buttons(); |
115 | redraw_buttons(); |
116 | EndDraw(); |
116 | EndDraw(); |
117 | } |
117 | } |
118 | 118 | ||
119 | void Button() { |
119 | void Button() { |
120 | int id = get_os_button(); |
120 | int id = get_os_button(); |
121 | if (id == 1) exit(0); else |
121 | if (id == 1) exit(0); else |
122 | { |
122 | { |
123 | int x = (id/10)-1; |
123 | int x = (id/10)-1; |
124 | int y = (id%10)-1; |
124 | int y = (id%10)-1; |
125 | 125 | ||
126 | for (int i = 0; i<_size; i++) |
126 | for (int i = 0; i<_size; i++) |
127 | if (field[i][x]) field[i][x] = 0; else field[i][x] = 1; |
127 | if (field[i][x]) field[i][x] = 0; else field[i][x] = 1; |
128 | 128 | ||
129 | for (int i = 0; i<_size; i++) |
129 | for (int i = 0; i<_size; i++) |
130 | if (field[y][i]) field[y][i] = 0; else field[y][i] = 1; |
130 | if (field[y][i]) field[y][i] = 0; else field[y][i] = 1; |
131 | 131 | ||
132 | if (field[y][x]) field[y][x] = 0; else field[y][x] = 1; |
132 | if (field[y][x]) field[y][x] = 0; else field[y][x] = 1; |
133 | 133 | ||
134 | redraw_buttons(); |
134 | redraw_buttons(); |
135 | } |
135 | } |
136 | } |
136 | } |
137 | 137 | ||
138 | int main(int argc, char **argv) |
138 | int main(int argc, char **argv) |
139 | { |
139 | { |
140 | if (kolibri_libimg_init() == -1) |
140 | if (kolibri_libimg_init() == -1) |
141 | { |
141 | { |
142 | printf("Can not load libimg.obj!\n"); |
142 | printf("Can not load libimg.obj!\n"); |
143 | exit(1); |
143 | exit(1); |
144 | } |
144 | } |
145 | 145 | ||
146 | load_pict(); |
146 | load_pict(); |
147 | 147 | ||
148 | draw_window(); |
148 | draw_window(); |
149 | while(1) |
149 | while(1) |
150 | { |
150 | { |
151 | switch(get_os_event()) |
151 | switch(get_os_event()) |
152 | { |
152 | { |
153 | case evButton: |
153 | case evButton: |
154 | Button(); |
154 | Button(); |
- | 155 | ||
155 | break; |
156 | break; |
156 | 157 | ||
157 | case evKey: |
158 | case evKey: |
158 | get_key(); |
159 | get_key(); |
159 | break; |
160 | break; |
160 | 161 | ||
161 | case evReDraw: |
162 | case evReDraw: |
162 | draw_window(); |
163 | draw_window(); |
163 | break; |
164 | break; |
164 | } |
165 | } |
165 | } |
166 | } |
166 | } |
167 | } |