*in progress*
[winnie] / src / wm.h
1 #ifndef WM_H_
2 #define WM_H_
3
4 #include <list>
5
6 #include "geom.h"
7 #include "pixmap.h"
8
9 class Window;
10
11 class WindowManager {
12 private:
13         std::list<Window*> windows;
14
15         std::list<Rect> dirty_rects;
16
17         int bg_color[3];
18         int frame_thickness;
19         int titlebar_thickness;
20         int frame_fcolor[3];
21         int frame_ucolor[3];
22
23         Window *root_win;
24         Window *focused_win;
25
26         Pixmap mouse_cursor;
27
28         void create_frame(Window *win);
29         void destroy_frame(Window *win);
30
31 public:
32         WindowManager();
33         ~WindowManager();
34
35         void invalidate_region(const Rect &rect);
36         void process_windows();
37
38         void add_window(Window *win);
39         void remove_window(Window *win);
40
41         void set_focused_window(Window *win);
42         const Window *get_focused_window() const;
43         Window *get_focused_window();
44
45         Window *get_window_at_pos(int pointer_x, int pointer_y);
46 };
47
48 extern WindowManager *wm;
49
50 #endif  // WM_H_