Files
zdwm/docs/min_core_draft/wm_plan.h
Zedhugh Chen 2fc4b33359 style: 更新 .clang-format 规则并重新格式化所有源文件
- 重构模块使用新的代码风格
- 老代码 (src 目录下的代码) 继续使用之前的代码风格

通过在需要不同代码风格的目录下放对应 .clang-format 配置文件实现
2026-04-14 01:52:53 +08:00

71 lines
1.6 KiB
C

#pragma once
#include "wm_types.h"
typedef enum wm_dirty_flags_t {
WM_DIRTY_NONE = 0,
WM_DIRTY_STATE = 1u << 0,
WM_DIRTY_LAYOUT = 1u << 1,
WM_DIRTY_STACK = 1u << 2,
WM_DIRTY_OUTPUT = 1u << 3,
// 只影响窗口装饰,不改变 layout 结果;例如焦点切换导致边框颜色变化
WM_DIRTY_DECORATION = 1u << 4,
WM_DIRTY_RENDER = 1u << 5,
} wm_dirty_flags_t;
typedef enum wm_effect_type_t {
WM_EFFECT_NONE,
WM_EFFECT_MAP_WINDOW,
WM_EFFECT_UNMAP_WINDOW,
WM_EFFECT_CONFIGURE_WINDOW,
WM_EFFECT_FOCUS_WINDOW,
WM_EFFECT_RESTACK_WINDOWS,
WM_EFFECT_RENDER_OUTPUT,
} wm_effect_type_t;
typedef struct wm_effect_t {
wm_effect_type_t type;
union {
struct {
wm_window_id_t window_id;
} map_window;
struct {
wm_window_id_t window_id;
} unmap_window;
struct {
wm_window_id_t window_id;
wm_rect_t rect; // 最终外框矩形(包含边框)
uint16_t border_width; // runtime 解析出的有效边框宽度
wm_rgba32_t border_rgba; // runtime 解析出的有效边框颜色
} configure_window;
struct {
wm_window_id_t window_id;
} focus_window;
struct {
const wm_window_id_t *stack_order;
size_t stack_count;
} restack_windows;
struct {
wm_output_id_t output_id;
} render_output;
} as;
} wm_effect_t;
typedef struct wm_plan_t {
wm_effect_t *effects;
size_t effect_count;
size_t effect_capacity;
uint32_t dirty_flags;
} wm_plan_t;
void wm_plan_init(wm_plan_t *plan);
void wm_plan_reset(wm_plan_t *plan);
void wm_plan_shutdown(wm_plan_t *plan);
bool wm_plan_push_effect(wm_plan_t *plan, wm_effect_t effect);