canvasSource
Describes a canvas displaying one immutable CPU image without a native runtime dependency.
The DrawImage already owns detached straight ARGB storage; this factory never retains a caller-owned pixel array. The returned source is immutable and thread-safe to share, and each attachment owns an independent binding. No subscription or retained resource is acquired until the canvas attaches.
Return
an externally owned source suitable for both native and headless presentation.
Parameters
positive immutable source image, retained without copying its already immutable pixels.
Throws
when the image has an empty extent.
Describes a canvas observing revisioned immutable CPU frames through the existing state-source protocol.
Each attachment subscribes independently and closes only its subscription when replaced, suspended, or removed. Any-thread callbacks only replace the newest pending snapshot and never invalidate or mutate the retained tree. A timed or untimed owner-thread frame commits its cutoff before layout and painting; newer notifications wait until the next frame. The binding retains only a committed image and newest pending image between frames, plus one transaction-local cutoff snapshot while a frame is being committed. Every published image must have positive extent and own immutable straight ARGB storage.
Return
an immutable source description without an active observation.
Parameters
externally owned source, which remains open after every canvas closes.