#pragma once #include #define LAYER_MAX 32 #define LAYER_NAME_LEN 32 typedef enum { LAYER_TYPE_DESKTOP, LAYER_TYPE_WINDOW, LAYER_TYPE_MOUSE, LAYER_TYPE_OVERLAY, } layer_type_t; typedef struct layer { UINT32 id; char name[LAYER_NAME_LEN]; layer_type_t type; int x, y; UINT32 w, h; int z; bool visible; EFI_GRAPHICS_OUTPUT_BLT_PIXEL* buffer; struct layer* next; } layer_t; // Initialization — allocates back buffer, registers keyboard handler void layer_init(void); // Layer management layer_t* layer_create(const char* name, layer_type_t type, UINT32 w, UINT32 h); void layer_destroy(layer_t* layer); void layer_set_z(layer_t* layer, int z); void layer_set_pos(layer_t* layer, int x, int y); void layer_set_visible(layer_t* layer, bool visible); layer_t* layer_get_by_id(UINT32 id); layer_t* layer_get_focused(void); // Compositor task entry void layer_compositor_task(void);