#ifndef VGPU_CURSOR_H #define VGPU_CURSOR_H /* cursor.h — win32 GDI cursor sample/compose onto a tight BGRA frame. */ #include #include "ctx.h" /* win32 vgpu_ctx (cursor state) */ /* Sample the current cursor (position/shape) into ctx->cursor. * Returns 1 if anything changed since last sample, else 0. */ int cursor_sample(vgpu_ctx* ctx); /* Resolve a HCURSOR to a VGPU_CURSOR_ID_* by comparing against the system cursor table * (LoadCursor(NULL, IDC_*) loaded once on first use). Returns VGPU_CURSOR_ID_UNKNOWN for * custom cursors. Not hot-path: called only under the shape-change gate. */ int cursor_resolve_id(HCURSOR hc); /* Extract glyph/hotspot/dims for hc into ctx->cursor, resolve its cursor_id, and record it as * the current handle. For backends that source position elsewhere (DDA from frame info) and * only need the shape on a shape-change gate. Caller serializes ctx->cursor writes. */ void cursor_apply_shape(vgpu_ctx* ctx, HCURSOR hc); /* Alpha/AND-XOR compose the sampled cursor onto a tight BGRA frame. */ void cursor_draw(vgpu_ctx* ctx, uint8_t* bgra, uint32_t width, uint32_t height); #endif /* VGPU_CURSOR_H */