the code is more or less there. have to figure out how to find the fbconfigs right...
[dana/dcompmgr.git] / window.h
1 #ifndef dc__window_h
2 #define dc__window_h
3
4 #include <xcb/xcb.h>
5 #include <xcb/xfixes.h>
6 #include <glib.h>
7
8 struct d_screen;
9
10 typedef struct d_window {
11     xcb_window_t     id;
12     struct d_screen *sc;
13 } d_window_t;
14
15 typedef enum {
16     DC_WINDOW_TYPE_INVALID,
17     DC_WINDOW_TYPE_NORMAL,
18     DC_WINDOW_TYPE_DESKTOP,
19     DC_WINDOW_TYPE_DOCK,
20     DC_WINDOW_TYPE_DIALOG,
21     DC_WINDOW_TYPE_TOOLBAR,
22     DC_WINDOW_TYPE_MENU,
23     DC_WINDOW_TYPE_UTILITY,
24     DC_WINDOW_TYPE_SPLASH,
25     DC_WINDOW_TYPE_DROPDOWN_MENU,
26     DC_WINDOW_TYPE_POPUP_MENU,
27     DC_WINDOW_TYPE_TOOLTIP,
28     DC_WINDOW_TYPE_NOTIFICATION,
29     DC_WINDOW_TYPE_COMBO,
30     DC_WINDOW_TYPE_DND
31 } d_window_type_t;
32
33 d_window_t* window_new(xcb_window_t id, struct d_screen *sc);
34
35 void window_ref(d_window_t *w);
36 void window_unref(d_window_t *w);
37
38 void window_show(d_window_t *w);
39 void window_hide(d_window_t *w);
40 void window_fake_unmapped(d_window_t *w);
41
42 void window_become_zombie(d_window_t *w);
43 void window_zombie_dead(d_window_t *w);
44
45 void window_configure(d_window_t *w, int x, int y, int width, int height,
46                       int border_width);
47 void window_move(d_window_t *w);
48 void window_resize(d_window_t *w);
49 void window_reshape(d_window_t *w);
50 void window_opacity_change(d_window_t *w);
51 void window_damage(d_window_t *w);
52 void window_restack(d_window_t *w, d_window_t *above);
53
54 gboolean window_is_zombie(d_window_t *w);
55 gboolean window_is_input_only(d_window_t *w);
56 gboolean window_is_mapped(d_window_t *w);
57 gboolean window_is_attr_mapped(d_window_t *w);
58 gboolean window_is_argb(d_window_t *w);
59
60 uint8_t window_get_depth(d_window_t *w);
61
62 void window_get_area(d_window_t *w, int *x, int *y, int *width, int *height,
63                      int *border_width);
64
65 xcb_pixmap_t window_get_pixmap(d_window_t *w);
66 xcb_visualid_t window_get_visual(d_window_t *w);
67 xcb_xfixes_region_t window_get_region(d_window_t *w);
68
69 void window_update_user_opacity(d_window_t *w);
70
71 void  window_add_plugin_data(d_window_t *w, int id, void *data);
72 void* window_find_plugin_data(d_window_t *w, int id);
73 void  window_remove_plugin_data(d_window_t *w, int it);
74
75 void window_create_damage(d_window_t *w);
76 void window_destroy_damage(d_window_t *w);
77
78 d_window_type_t window_get_type(d_window_t *w);
79
80 uint16_t window_get_opacity(d_window_t *w);
81 void window_set_opacity(d_window_t *w, uint16_t o);
82
83 void window_zombie_ref(d_window_t *w);
84 void window_zombie_unref(d_window_t *w);
85
86 #endif