*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         std::list<Window*> frames;
15
16         std::list<Rect> dirty_rects;
17
18         int bg_color[3];
19         int frame_thickness;
20         int titlebar_thickness;
21         int frame_fcolor[3];
22         int frame_ucolor[3];
23
24         Window *root_win;
25         Window *focused_win;
26
27         Pixmap mouse_cursor;
28
29         void create_frame(Window *win);
30         void destroy_frame(Window *win);
31
32 public:
33         WindowManager();
34         ~WindowManager();
35
36         void invalidate_region(const Rect &rect);
37         void process_windows();
38
39         void add_window(Window *win);
40         void remove_window(Window *win);
41
42         void set_focused_window(Window *win);
43         const Window *get_focused_window() const;
44         Window *get_focused_window();
45
46         Window *get_window_at_pos(int pointer_x, int pointer_y);
47 };
48
49 extern WindowManager *wm;
50
51 #endif  // WM_H_