fixed fbdev/*.cc to work with malloc
[winnie] / src / main.cc
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include "winnie.h"
6
7 static void display(Window *win);
8 static void keyboard(Window *win, int key, bool pressed);
9 static void button(Window *win, int bn, bool pressed, int x, int y);
10 static void motion(Window *win, int x, int y);
11 static void cleanup();
12
13 int main()
14 {
15         if(!winnie_init()) {
16                 exit(1);
17         }
18
19         atexit(cleanup);
20
21         Window *win1 = new Window;
22         win1->set_title("Clipping the win title");
23         win1->move(200, 100);
24         win1->resize(200, 300);
25         win1->set_display_callback(display);
26         win1->set_keyboard_callback(keyboard);
27         win1->set_mouse_button_callback(button);
28         win1->set_mouse_motion_callback(motion);
29
30         Window *win2 = new Window;
31         win2->set_title("window 2");
32         win2->move(300, 100);
33         win2->resize(200, 300);
34         win2->set_display_callback(display);
35         win2->set_keyboard_callback(keyboard);
36         win2->set_mouse_button_callback(button);
37         win2->set_mouse_motion_callback(motion);
38
39         wm->add_window(win1);
40         wm->add_window(win2);
41
42         while(1) {
43                 process_events();
44         }
45 }
46
47 static void display(Window *win)
48 {
49         fill_rect(win->get_absolute_rect(), 128, 128, 128);
50 }
51
52 static void keyboard(Window *win, int key, bool pressed)
53 {
54         switch(key) {
55         case 'q':
56                 exit(0);
57         }
58 }
59
60 static void button(Window *win, int bn, bool pressed, int x, int y)
61 {
62         printf("WINDOW(%p) button %d %s\n", (void*)win, bn, pressed ? "press" : "release");
63 }
64
65 static void motion(Window *win, int x, int y)
66 {
67         printf("WINDOW(%p) motion %d %d\n", (void*)win, x, y);
68 }
69
70 static void cleanup()
71 {
72         winnie_shutdown();
73 }