Subversion Repositories Kolibri OS

Rev

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
}