# libsst-wm

Cross-platform window management, input events, and OpenGL context creation.

## API

### Window management
- `SST_WM_Init()` / `SST_WM_Shutdown()`
- `SST_WM_CreateWindowOnScreen()` / `SST_WM_DestroyWindow()`
- `SST_WM_SetWindowText()`, `SST_WM_GetWindowRect()`, `SST_WM_MoveWindowOnScreen()`, `SST_WM_ResizeWindow()`, `SST_WM_SetWindowState()`
- `SST_WM_ShowDialogBox()` -- native message dialog

### Display and video modes
- `SST_WM_CreateDisplayTarget()` / `SST_WM_DestroyDisplayTarget()`
- `SST_WM_CreateGraphicsEnumerator()` -- enumerate adapters, screens, video modes
- `SST_WM_SetVideoModeOnScreen()` / `SST_WM_GetVideoModeOnScreen()`

### Events
- `SST_WM_GetEvent()` -- dequeue next input/window event
- `SST_WM_SendUserEvent()` -- post custom event

### OpenGL
- `SST_WM_CreateOpenGLContext()` / `SST_WM_CreateSlaveOpenGLContext()` -- shared contexts for multi-threaded rendering
- `SST_WM_BindOpenGLContext()`, `SST_WM_SwapOpenGLBuffers()`, `SST_WM_DestroyOpenGLContext()`

### Software rendering
- `SST_WM_EnableSoftwareRendering()` / `SST_WM_DisableSoftwareRendering()`
- `SST_WM_LockBackbuffer()` / `SST_WM_UnlockBackbuffer()`

## Platform backends

| Backend | Windowing | GL context | Input |
|---|---|---|---|
| Win32 | Win32 API | WGL | Win32 messages |
| Xlib | X11 | GLX | Xlib / XInput2 |
| RaspPi | DispmanX | EGL (partial) | -- |
| macOS | -- | -- | -- (stub) |

Internally uses a driver function-table architecture; each backend registers
its implementation at init time.
