#ifndef NGXC_COMPOSITOR_H #define NGXC_COMPOSITOR_H #include "window_texture.h" // TODO: Make dynamic #define NGXC_COMPOSITOR_MAX_WINDOWS 100 /* TODO: Add window index inside this struct, to know how to move this inside |ngxc_compositor.windows| */ typedef struct { WindowTexture texture; Window above_window; int x; int y; } ngxc_window; typedef struct { Display *dpy; Window composite_window; double frame_timer; ngxc_window windows[NGXC_COMPOSITOR_MAX_WINDOWS]; int num_windows; } ngxc_compositor; void ngxc_compositor_init(ngxc_compositor *self, Display *dpy, Window composite_window); void ngxc_compositor_deinit(ngxc_compositor *self); void ngxc_compositor_add_window(ngxc_compositor *self, Window window, Window above_window); void ngxc_compositor_remove_window(ngxc_compositor *self, Window window); void ngxc_compositor_render(ngxc_compositor *self); void ngxc_compositor_on_configure(ngxc_compositor *self, const XConfigureEvent *configure_event); void ngxc_compositor_on_circulate(ngxc_compositor *self, const XCirculateEvent *circulate_event); #endif /* NGXC_COMPOSITOR_H */