#define dc__window_h
#include <xcb/xcb.h>
+#include <xcb/xfixes.h>
#include <glib.h>
struct d_screen;
typedef struct d_window {
xcb_window_t id;
- int ref;
struct d_screen *sc;
-
- gboolean mapped;
- gboolean zombie;
-
- void (*show)(struct d_window *w);
- void (*hide)(struct d_window *w);
- void (*become_zombie)(struct d_window *w);
} d_window_t;
+typedef enum {
+ DC_WINDOW_TYPE_INVALID,
+ DC_WINDOW_TYPE_NORMAL,
+ DC_WINDOW_TYPE_DESKTOP,
+ DC_WINDOW_TYPE_DOCK,
+ DC_WINDOW_TYPE_DIALOG,
+ DC_WINDOW_TYPE_TOOLBAR,
+ DC_WINDOW_TYPE_MENU,
+ DC_WINDOW_TYPE_UTILITY,
+ DC_WINDOW_TYPE_SPLASH,
+ DC_WINDOW_TYPE_DROPDOWN_MENU,
+ DC_WINDOW_TYPE_POPUP_MENU,
+ DC_WINDOW_TYPE_TOOLTIP,
+ DC_WINDOW_TYPE_NOTIFICATION,
+ DC_WINDOW_TYPE_COMBO,
+ DC_WINDOW_TYPE_DND
+} d_window_type_t;
+
d_window_t* window_new(xcb_window_t id, struct d_screen *sc);
void window_ref(d_window_t *w);
void window_unref(d_window_t *w);
+void window_show(d_window_t *w);
+void window_hide(d_window_t *w);
+void window_fake_unmapped(d_window_t *w);
+
+void window_become_zombie(d_window_t *w);
+void window_zombie_dead(d_window_t *w);
+
+void window_configure(d_window_t *w, int x, int y, int width, int height,
+ int border_width);
+void window_move(d_window_t *w);
+void window_resize(d_window_t *w);
+void window_reshape(d_window_t *w);
+void window_opacity_change(d_window_t *w);
+
+gboolean window_is_zombie(d_window_t *w);
+gboolean window_is_input_only(d_window_t *w);
+gboolean window_is_mapped(d_window_t *w);
+gboolean window_is_attr_mapped(d_window_t *w);
+gboolean window_is_argb(d_window_t *w);
+
+void window_get_area(d_window_t *w, int *x, int *y, int *width, int *height,
+ int *border_width);
+
+xcb_pixmap_t window_get_pixmap(d_window_t *w);
+xcb_visualid_t window_get_visual(d_window_t *w);
+xcb_xfixes_region_t window_get_region(d_window_t *w);
+
+void window_update_user_opacity(d_window_t *w);
+
+void window_add_plugin_data(d_window_t *w, int id, void *data);
+void* window_find_plugin_data(d_window_t *w, int id);
+void window_remove_plugin_data(d_window_t *w, int it);
+
+void window_create_damage(d_window_t *w);
+void window_destroy_damage(d_window_t *w);
+
+d_window_type_t window_get_type(d_window_t *w);
+
+uint16_t window_get_opacity(d_window_t *w);
+void window_set_opacity(d_window_t *w, uint16_t o);
+
+void window_zombie_ref(d_window_t *w);
+void window_zombie_unref(d_window_t *w);
+
#endif