f49f68609ede7b1b34a611203701170b4fb55aeb
[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         Pixmap bg;
43         if(!(bg.load("data/bg.ppm"))) {
44                 fprintf(stderr, "failed to load pixmap\n");
45         }
46
47         wm->set_background(&bg);
48
49         while(1) {
50                 process_events();
51         }
52 }
53
54 static void display(Window *win)
55 {
56         fill_rect(win->get_absolute_rect(), 128, 128, 128);
57 }
58
59 static void keyboard(Window *win, int key, bool pressed)
60 {
61         switch(key) {
62         case 'q':
63                 exit(0);
64         }
65 }
66
67 static void button(Window *win, int bn, bool pressed, int x, int y)
68 {
69         printf("WINDOW(%p) button %d %s\n", (void*)win, bn, pressed ? "press" : "release");
70 }
71
72 static void motion(Window *win, int x, int y)
73 {
74         printf("WINDOW(%p) motion %d %d\n", (void*)win, x, y);
75 }
76
77 static void cleanup()
78 {
79         winnie_shutdown();
80 }