mirror of
https://dev.lirent.ru/Vatrog/vm-automation-signaling.git
synced 2026-06-26 04:36:37 +03:00
27 lines
1.1 KiB
C
27 lines
1.1 KiB
C
|
|
#ifndef VGPU_CURSOR_H
|
||
|
|
#define VGPU_CURSOR_H
|
||
|
|
|
||
|
|
/* cursor.h — win32 GDI cursor sample/compose onto a tight BGRA frame. */
|
||
|
|
|
||
|
|
#include <stdint.h>
|
||
|
|
#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 */
|