These docs describe the main branch, including unreleased changes. Read the 0.6.0 docs.

OpenTUI 0.6.0

npmGitHub release

OpenTUI 0.5 kept the renderable tree in JavaScript. On each frame, JavaScript walked the tree and read each node’s position back from Yoga. It then made one native call for each draw, so the cost of a frame grew with the number of nodes and draws. In 0.6.0, native code owns the tree. Each Renderable has a node in a native scene, which holds the node’s Yoga node and paint state. Layout and paint setters stage their changes, and Core sends all staged changes to native code in one call before each frame step. Native code then lays out, clips, and paints the scene and fills the hit grid. It draws most built-in renderables without a call to JavaScript. When no visible node has a JavaScript hook, one native frame step lays out and paints the whole frame. Rendering pipeline follows a complete frame.

The built-in renderables and the React and Solid bindings keep their option names, but a few option values now throw, such as enableLayout: false. Custom renderables may need a little work. Renderable no longer has render(), getLayoutNode(), or a protected yogaNode. Draw in renderSelf(), renderBefore, or renderAfter, and report content size with setMeasureProvider(). Paint hooks also work differently. A hook of an unbuffered renderable now receives a recording buffer: OpenTUI stores the hook’s draw calls, and native code plays them back at the node’s place in paint order. Painting never stops to call JavaScript, so a hook cannot tear the frame. But a hook can no longer read the frame’s cells. To read cells, a hook must draw into a buffer that the renderable owns and compose that buffer, or the work must move to a post-process function. With buffered: true, the hooks draw into such a buffer, and OpenTUI composes it. Custom renderables shows a complete example.

Native rendering resources now belong to one owner, a native Context. Buffers, text buffers, views, syntax styles, images, and scene nodes cross the native boundary as generational handles instead of raw pointers. A stale handle fails with an error instead of touching freed memory, and destroying a Context releases everything that it owns. The factories that used to create resources without an owner now take one. For a resource that a renderer draws, pass renderer.nativeScene:

// 0.5: SyntaxStyle.fromStyles(styles)
const syntaxStyle = SyntaxStyle.fromStyles(styles, renderer.nativeScene)

// 0.5: OptimizedBuffer.create(40, 10, "unicode")
const buffer = OptimizedBuffer.create(40, 10, "unicode", {
  owner: renderer.nativeScene,
})

Image factories take only a ResourceContext as their owner. For the renderer’s Context, pass renderer.nativeScene.resourceContext. Without a renderer, create a Context with new ResourceContext({ objectCapacity, renderCellsMax }), and call its destroy() method when you are done. objectCapacity is the initial number of object slots, and renderCellsMax limits the cells in each buffer. API and symbol index lists each removed or changed API with its replacement.

Terminal transitions are now asynchronous. suspend() and resume() return promises. destroy() still returns at once, but the terminal restoration and the remaining output finish later. Before you reuse the streams, or before a deliberate exit, await renderer.closed:

await renderer.suspend()
// Run an editor or a shell in the terminal.
await renderer.resume()

renderer.destroy()
await renderer.closed

The native library now has a C interface. opentui.h declares a C ABI of ot_* functions, and the opentui Zig module gains the same Context, scene, and Session model. A C or Zig program can build a scene and write frames with no JavaScript runtime. The ABI is experimental, so use the header, library, and bindings from the same revision. Native rendering starts with a box and a label.

One fix changes colors in some SSH sessions. Inside an SSH or mosh login, OpenTUI detects remote mode automatically. In that mode, it used to stop reading the environment before it read TERM and COLORTERM. As a result, every remote terminal got truecolor output, and a 256-color terminal such as GNU screen 4.x showed the UI without color. OpenTUI now reads these two keys. This has a cost. A truecolor terminal that reaches the server with TERM=xterm-256color and no COLORTERM used to get exact colors by accident. Examples are iTerm2 and WezTerm over a stock macOS ssh client, which does not forward COLORTERM. They now get 256-color approximations. A Kitty XTVERSION reply still turns on truecolor. To keep truecolor in other terminals, export COLORTERM=truecolor on the server, forward it with SendEnv COLORTERM and AcceptEnv COLORTERM, or pass it in the renderer’s environment option.

Breaking changes

  • core: Renderable.render(), updateLayout(), updateFromLayout(), canReuseRenderCommandList(), getLayoutNode(), the protected yogaNode, the RenderCommand type, and RootRenderable.calculateLayout() are removed. Draw in renderSelf(), renderBefore, or renderAfter, and use setMeasureProvider(), invalidateIntrinsicSize(), and getLayout() for size and layout. Protected members such as _x, _y, getScissorRect(), and _getVisibleChildren() are also removed. Use x, y, screenX, and screenY, and the viewportCulling option of ScrollBox. See Custom renderables. (#1479)
  • core: The enableLayout: false option throws. on("resized") and on("layout-changed") throw on a renderable that is not the root, where these listeners never ran. Use onSizeChange instead. See Layout. (#1479)
  • core: Paint hooks of an unbuffered renderable get a recording buffer that cannot read cells, and renderer.nextRenderBuffer accepts drawing only in a post-process function. buffer.buffers works only in a post-process function. Elsewhere, use buffer.withBuffers(callback). To read or change cells in a hook, set buffered: true, or draw into a buffer that you own and compose it. For the whole frame, use a post-process function. See Rendering pipeline. (#1479)
  • core: addToHitGrid(), pushHitGridScissorRect(), popHitGridScissorRect(), and clearHitGridScissorRects() are removed from CliRenderer and RenderContext. Native code adds a hit area for each visible node, and renderer.hitTest(x, y) queries the hit grid. A custom RenderContext must implement nativeScene, requestAnimationFrame(), and cancelAnimationFrame(). See Interaction, focus, and selection. (#1479)
  • core: OptimizedBuffer.create(), TextBuffer.create(), EditBuffer.create(), SyntaxStyle.create(), SyntaxStyle.fromStyles(), and SyntaxStyle.fromTheme() require an owner, and the ptr properties of buffers, views, and styles are removed. Pass renderer.nativeScene, or a ResourceContext when no renderer exists. Resources from different owners cannot be used together, and the resources that a renderer owns stop working when the renderer is destroyed. See How Core uses native. (#1479)
  • core: suspend() and resume() return a Promise<void>, and destroy() restores the terminal asynchronously. Await the transitions, and await renderer.closed before you reuse the streams. Both methods throw while another transition is pending, and when the terminal is not set up, for example on a test renderer or after destroy(). See Lifecycle and cleanup. (#1479)
  • core: The useThread option, renderer.useThread, renderer.rendererPtr, dumpBuffers(), dumpOutputBuffer(), and the OTUI_NO_NATIVE_RENDER environment variable are removed. Remove useThread. Instead of dumpBuffers(), use test frame capture or renderer.currentRenderBuffer.withBuffers(). Instead of dumpOutputBuffer(), give the renderer a custom stdout. Instead of OTUI_NO_NATIVE_RENDER, use createTestRenderer(). See Rendering diagnostics. (#1479)
  • core: The Clipboard class is removed. Use renderer.copyToClipboardOSC52() and renderer.clearClipboardOSC52(), or createClipboard() with createHostClipboard() and createRendererClipboardAdapter(renderer). See Clipboard. (#1479)
  • core: OpenTUI no longer installs a process-global requestAnimationFrame, cancelAnimationFrame, or window. Use renderer.requestAnimationFrame() and renderer.cancelAnimationFrame(). See Animation and Timeline. (#1479)
  • core: After destroy(), renderable constructors, the timeline engine.attach(), and most renderer methods throw, for example setTerminalTitle(), copyToClipboardOSC52(), getStats(), and hitTest(). requestRender() and resize() do nothing. Check renderer.isDestroyed first. See Lifecycle and cleanup. (#1479)
  • core: When the output stream emits error, or closes or finishes before the renderer closes it, the renderer destroys itself and renderer.closed rejects. Handle the rejection of closed. See Lifecycle and cleanup. (#1479)
  • core: Drawing methods throw RangeError for fractional, NaN, or infinite coordinates and sizes. drawText() and box titles throw RangeError for text larger than 64 KiB of UTF-8. setCell(), setCellWithAlphaBlending(), drawChar(), and drawText() throw NativeError for attribute bits 8 to 31. In a paint hook, the frame fails instead. See Buffer API. (#1479)
  • core: EditBuffer.setText(), insertText(), insertChar(), and replaceText(), the same Textarea and Input methods, Textarea initialValue, Input.value, and both placeholder options throw NativeError for control characters other than tab, carriage return, and line feed. DEL and C1 control characters also throw. Remove these characters first. See Editing buffers and views. (#1479)
  • core: The minimum Bun version is 1.3.14 (was 1.3.0), the oldest version that CI tests. Bun 1.3.0 to 1.3.3 pass some FFI pointer arguments as wrong addresses, Bun 1.3.4 to 1.3.6 can crash after a Worker exits, and Bun 1.3.7 can hang while it loads modules. See Runtime and platform support. (#1479)
  • core: The pointer-based RenderLib methods, such as createRenderer and bufferDrawText, and the handle types, such as RendererHandle and OptimizedBufferHandle, are removed. Use the public classes and the Context*Handle, SessionHandle, and SceneNodeHandle types. See How Core uses native. (#1479)
  • core: Standalone Yoga throws YogaError for invalid arguments, and Config.free() throws while nodes from that config remain. Measure and dirtied functions must return synchronously and must not change Yoga nodes. See Yoga API. (#1479)
  • ssh: session.write() can throw OutputPressureError or RangeError. cols and rows hold the requested size until the renderer attaches, and onClose runs at logical close, before the renderer finishes closing. See SSH. (#1479)
  • native: The legacy native exports, such as createRenderer and bufferDrawText, are removed. Use the ot_* functions in opentui.h. In Zig, the global grapheme and link pools are removed, so OptimizedBuffer.init() and CliRenderer.create() require a link_pool. GraphemePool.acquire() and LinkPool.acquire() replace alloc(). They return an ID that holds one reference, which decref() releases. See C and Zig. (#1479)

Added

  • core: renderer.requestAnimationFrame() and renderer.cancelAnimationFrame() schedule one-shot frame callbacks for one renderer. getTimelineEngine(renderer) and createTimeline(options, renderer) give each renderer its own timeline engine. See Animation and Timeline. (#1479)
  • core: renderer.closed resolves after destruction writes the remaining output and native teardown finishes. It rejects when the output fails or does not finish within one second. See Lifecycle and cleanup. (#1479)
  • core: renderer.requestResize(width, height) debounces size changes from a custom terminal and applies only the latest size. See Renderer. (#1479)
  • core: The nativeSceneWorkBudget option lets a frame yield to the event loop during preparation. Painting still runs in one native call. See Renderer. (#1479)
  • core: The environment option gives terminal environment values to one renderer, for example { TERM: pty.term } from an SSH client. These values replace the forwardEnvKeys values with the same names. In an automatically detected SSH login, only TERM and COLORTERM take effect unless you set remote: true. See Terminal capabilities. (#1603)
  • core: ResourceContext owns native resources without a renderer, and NativeError reports a failed native call with its operation and status. Image factories accept a ResourceContext in their owner option, such as renderer.nativeScene.resourceContext. See How Core uses native and NativeImage. (#1479)
  • core: Custom renderables get setMeasureProvider(), invalidateIntrinsicSize(), getLayout(), refreshHooks(), and defineNativeIntegration(). TextRenderable and CodeRenderable get drawToBuffer(), and OptimizedBuffer gets withBuffers() for scoped cell access. See Custom renderables. (#1479)
  • core: TestRendererSetup.dispose() and [Symbol.asyncDispose]() destroy the test renderer and wait for renderer.closed. ManualClock.pendingTimerCount counts the scheduled timeouts and active intervals. See Testing. (#1479)
  • native: opentui.h declares an experimental C ABI, and the opentui Zig module gains the same Context, scene, and Session model. A Context’s object table starts at object_capacity slots and doubles when it is full, up to 4,194,304 slots or object_capacity, whichever is larger. Past that limit, object creation fails with OT_OBJECT_LIMIT. See Native rendering. (#1479, #1622)
  • native: Terminology gets OSC 8 hyperlinks and OSC 777 notifications when its XTVERSION reply names it. See Terminal capabilities. (#1566)
  • ssh: The server accepts COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION env requests that arrive before the shell request, with values of at most 256 bytes. It rejects other keys. The renderer gets these values with the client’s PTY TERM, so capability detection sees the client’s color depth and hyperlink support, and GNU Screen or tmux from the TERM prefix. A client with TERM=xterm-256color and no COLORTERM now gets 256-color output instead of truecolor. To keep truecolor, add SendEnv COLORTERM to the client’s ssh configuration. See SSH. (#1603)

Changed

  • core: Native code lays out, culls, and paints the scene and fills the hit grid, so JavaScript no longer walks the tree on each frame. JavaScript work in a frame now grows with changes and hooks, not with the number of renderables. Some built-in renderables, such as Select and ScrollBox, still run JavaScript hooks. See Rendering pipeline. (#1479)
  • native: Text buffers build rope slices in one allocation. Setting and appending text use less time and memory. See Editing buffers and views. (#1582)
  • native: Buffers write cells that are not grapheme clusters on a faster path, and drawText() writes printable ASCII without copying it. See Buffer API. (#1591)
  • core: EmbeddedTerminalRenderable encodes meta as Alt, and only super encodes as Super. Core’s key parser sets meta for Alt, so Alt+b now reaches a legacy child as ESC b, not b. On macOS, an Alt modifier reaches the child as Alt, because the host terminal already applied its Option setting. See Embedded terminal. (#1594, 1b25377b6, f0d7d1d3b, be14991e6)
  • react: root.render() does nothing when the renderer is destroyed, for example after exitOnCtrlC. See React bindings. (#1604)
  • solid: render() does not mount when the renderer is destroyed, for example after exitOnCtrlC. See Solid bindings. (#1604)

Fixed

  • native: In an SSH or mosh login, automatically detected remote mode reads the color depth from TERM and COLORTERM. A 256-color terminal such as GNU screen 4.x gets 256-color output instead of truecolor that it cannot show. See Terminal capabilities. (#1624)
  • core: In split-footer mode, a write that continues a scrollback row no longer loses or overwrites a wide character at the end of the row. Tabs in captured stdout count from the start of the terminal row and stop at the last column. See Renderer. (#1597, #1617)
  • native: In split-footer mode, a scrollback row that fills the terminal width keeps its last cell. Output no longer erases the footer when fewer than two rows remain above it, for example with the default footer in a terminal of 13 rows or fewer. See Renderer. (#1581, #1618)
  • native: A highlight at the end of a line no longer colors text that an append, insert, or undo adds to that line later. setText() and replaceText() drop highlights on lines past the new line count, so getHighlightCount() and getLineHighlights() no longer report them. See Editing buffers and views. (#1621, #1601)
  • native: Up and Down move the cursor to the start of a wide character or tab, not inside it. This applies to EditBuffer.moveCursorUp() and moveCursorDown(), EditorView.moveUpVisual() and moveDownVisual(), the Textarea arrow keys, and EditorView.setViewport() with moveCursor. See Textarea. (#1596)
  • native: Down does nothing in an empty Textarea while it shows a placeholder of more than one row. The next edit no longer fails with InvalidArgument. See Textarea. (#1619)
  • native: A width change in word-wrap mode releases the layout memory of a narrower wrap. Before this fix, a 94 KiB text wrapped at width 1 and then at width 80 kept about 46 MB. See Text. (#1602)
  • core: Key bindings use the Kitty base-layout key only when the typed key is one non-ASCII character. On Dvorak, Ctrl+J no longer matches exitOnCtrlC, and Ctrl+ㅊ still matches Ctrl+C. See Keyboard input. (#1599)
  • core: .tsx files and tsx Markdown fences use the tree-sitter TSX grammar through a separate typescriptreact parser. JSX closing tags no longer highlight as regular expressions. See Syntax highlighting with Tree-sitter. (#1598)
  • core: The tree-sitter worker changes #lua-match? predicates to #match? in bundled and registered queries when it can translate the pattern. TypeScript and Zig identifiers no longer all get the type and constant captures. See Syntax highlighting with Tree-sitter. (#1620)
  • core: EmbeddedTerminalRenderable sends F1 to F12 with or without modifiers, keys that the host terminal sends in SS3 form, and the keypad Begin key. It sends F13 to F25 to a child in Kitty keyboard mode. See Embedded terminal. (#1616)
  • native: The embedded terminal answers OSC 10, 11, and 12 and Kitty OSC 21 color queries, and it applies an OSC 10 or OSC 11 that sets only one default color. OSC 110 resets the foreground to white, and OSC 111 resets the background to black. See Embedded terminal. (#1615)
  • native: The embedded terminal answers Primary, Secondary, and Tertiary Device Attributes queries. fish 4.1 and later no longer stall for about two seconds at startup. See Embedded terminal. (#1595)

API changes#

@opentui/core#

Added

  • class FFIRenderLib
  • class NativeError extends Error
  • class NativeSession
  • class ResourceContext implements NativeResourceOwner
  • class Yoga.YogaError extends Error
  • const NATIVE_BUFFER_TEXT_BYTES_MAX: 65536
  • const NATIVE_EDGE_NONE: 0
  • const NATIVE_SESSION_CONTROL_PACKET_BYTES: 4096
  • constructor FFIRenderLib(libPath?: string)
  • constructor NativeError(operation: string, status: NativeStatus)
  • constructor NativeSession(sink: Writable, options?: NativeSessionDriverOptions, owner?: NativeSession | undefined)
  • constructor ResourceContext(options: NativeContextOptions)
  • constructor Yoga.YogaError(operation: string, status: YogaStatus)
  • enum NativeBorder
  • enum NativeEditCommand
  • enum NativeEditEvent
  • enum NativeEditHighlightOperation
  • enum NativeEditPositionQuery
  • enum NativeEditorCommand
  • enum NativeEditorPositionQuery
  • enum NativeEditorSelectionOperation
  • enum NativeEditorStyleMask
  • enum NativeSceneFrame
  • enum NativeSceneHook
  • enum NativeScenePaintPhase
  • enum NativeSessionPumpStatus
  • enum NativeSessionRenderStatus
  • enum NativeSessionState
  • enum NativeSessionTerminalPhase
  • enum NativeStatus
  • enum NativeTextViewCommand
  • enum Yoga.YogaStatus
  • enum-member Yoga.YogaStatus.Busy = 5
  • enum-member Yoga.YogaStatus.DepthLimit = 6
  • enum-member Yoga.YogaStatus.Exception = 3
  • enum-member Yoga.YogaStatus.InvalidArgument = 1
  • enum-member Yoga.YogaStatus.Ok = 0
  • enum-member Yoga.YogaStatus.OutOfMemory = 2
  • enum-member Yoga.YogaStatus.Poisoned = 4
  • function acquireSessionBufferLease(lib: RenderLib, context: NativeContextHandle, session: SessionHandle, which: SessionBuffer, frame?: NativeSceneFrameRequest | null): NativeContextBufferLease
  • function getTimelineEngine(renderer: CliRenderer): TimelineEngine
  • interface BufferAccess
  • interface ContextObjectHandle
  • interface EncodedUnicode
  • interface ImageCreateOptions
  • interface NativeBufferGrid
  • interface NativeBufferStack
  • interface NativeContextBufferOptions
  • interface NativeContextEditBufferOptions
  • interface NativeContextImageDraw
  • interface NativeContextOptions
  • interface NativeEditBufferInfo
  • interface NativeEditorReplacement
  • interface NativeEditorSelection
  • interface NativeEditorStyle
  • interface NativeEditorViewInfo
  • interface NativeEditorViewport
  • interface NativeEncodedStyledText
  • interface NativeOutputTicket
  • interface NativeRenderableIntegration
  • interface NativeResourceOwner
  • interface NativeSceneArrowOptions
  • interface NativeSceneBoxDetails
  • interface NativeSceneEditorOptions
  • interface NativeSceneFrameOptions
  • interface NativeSceneFrameRequest
  • interface NativeSceneLayout
  • interface NativeScenePaint
  • interface NativeScenePaintSlot
  • interface NativeSceneSliderOptions
  • interface NativeSceneTextMetrics
  • interface NativeSceneTextOptions
  • interface NativeSceneTextSelectionOptions
  • interface NativeSessionBufferLease
  • interface NativeSessionCapabilities extends TerminalCapabilities
  • interface NativeSessionCursorOptions extends CursorStyleOptions
  • interface NativeSessionDriverOptions
  • interface NativeSessionKittyImageTransportStatus
  • interface NativeSessionOptions
  • interface NativeSessionPumpResult
  • interface NativeSessionRendererOptions
  • interface NativeSessionRendererState
  • interface NativeSessionScheduler
  • interface NativeSessionTerminalOptions
  • interface NativeSplitSnapshot
  • interface NativeTextBufferInfo
  • protected method BoxRenderable.getNativeScenePaint(): NativeScenePaint
  • method CliRenderer.cancelAnimationFrame(handle: number): void
  • method CliRenderer.hasFrameCallback(callback: (deltaTime: number) => Promise<void>): boolean
  • method CliRenderer.requestAnimationFrame(callback: FrameRequestCallback): number
  • method CliRenderer.requestResize(width: number, height: number): void
  • protected method CodeRenderable.destroyOwnedResources(): void
  • protected method CodeRenderable.onUpdate(deltaTime: number): void
  • method DiffRenderable.destroyRecursively(): void
  • method EditBuffer.runMutation<T>(operation: () => T): T
  • protected method EditBufferRenderable.destroyOwnedResources(): void
  • protected method EmbeddedTerminalRenderable._invokeNativePaint(buffer: OptimizedBuffer, deltaTime: number): void
  • protected method ImageRenderable.createFrameBuffer(): void
  • protected method LineNumberRenderable.destroySelf(): void
  • static method OptimizedBuffer.fromSession(lib: RenderLib, context: NativeContextHandle, session: SessionHandle, which: SessionBuffer, getFrame?: () => NativeSceneFrameRequest | null): OptimizedBuffer
  • method OptimizedBuffer.withBuffers<T>(callback: (cells: BufferAccess) => T): T
  • protected method Renderable._invokeNativePaint(buffer: OptimizedBuffer, deltaTime: number): void
  • protected method Renderable.abortConstruction(error: unknown, cleanup?: (run: (step: () => void) => void) => void): never
  • method Renderable.addListener(event: string | symbol, listener: (...args: any[]) => void): this
  • method Renderable.assertMutable(): void
  • protected method Renderable.assignOptions(target: Renderable, options: object | undefined): void
  • static protected method Renderable.defineNativeIntegration(integration: NativeRenderableIntegration): NativeRenderableIntegration
  • protected method Renderable.destroyOwnedResources(): void
  • method Renderable.getComputedLayout(): Layout
  • method Renderable.getLayout(): Readonly<Layout>
  • method Renderable.getMargin(edge: Edge): Value
  • protected method Renderable.getNativeScenePaint(): NativeScenePaint
  • method Renderable.getWidth(): Value
  • method Renderable.invalidateIntrinsicSize(): void
  • method Renderable.isFreed(): boolean
  • method Renderable.off(event: string | symbol, listener: (...args: any[]) => void): this
  • method Renderable.on(event: string | symbol, listener: (...args: any[]) => void): this
  • protected method Renderable.onLiveCountChanged(previous: number): void
  • method Renderable.prependListener(event: string | symbol, listener: (...args: any[]) => void): this
  • method Renderable.refreshHooks(): void
  • protected method Renderable.refreshNativeSceneHooks(): void
  • method Renderable.removeAllListeners(event?: string | symbol): this
  • method Renderable.removeListener(event: string | symbol, listener: (...args: any[]) => void): this
  • protected method Renderable.rollbackConstruction(error: unknown): never
  • protected method Renderable.runCleanup(steps: (run: (step: () => void) => void) => void): void
  • method Renderable.runMutation<T>(operation: () => T): T
  • protected method Renderable.setGap(gutter: Gutter, gap: number | `${number}%` | undefined): void
  • method Renderable.setMeasureProvider(provider: MeasureFunction | null): void
  • protected method Renderable.setNativeScenePaint(paint?: Partial<NativeScenePaint>): void
  • protected method RootRenderable.onLiveCountChanged(previous: number): void
  • protected method ScrollBarRenderable.destroyOwnedResources(): void
  • protected method TextBufferRenderable.destroyOwnedResources(): void
  • method TextBufferRenderable.drawToBuffer(buffer: OptimizedBuffer, x: number, y: number): void
  • protected method TextNodeRenderable.markDirty(): void
  • protected method TextRenderable.destroyOwnedResources(): void
  • method TextRenderable.requestRender(): void
  • method Yoga.Config.assertAlive(): void
  • method Yoga.Config.assertUnused(): void
  • method Yoga.Config.ensureCallbacks(): void
  • static method Yoga.Config.fromBorrowedPointer(ptr: Pointer, renderLib?: RenderLib): Config
  • method Yoga.Node.assertMutable(): void
  • method Yoga.Node.runMutation<T>(operation: () => T): T
  • static readonly property ArrowRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property BoxRenderable.nativeIntegration: NativeRenderableIntegration
  • readonly property CliRenderer.clock: Clock
  • readonly property CliRenderer.closed: Promise<void>
  • readonly property CliRenderer.lastSceneTimeMs: number
  • readonly property CliRenderer.nativeScene: NativeScene
  • property CliRendererConfig.environment?: Readonly<Record<string, string>>
  • property CliRendererConfig.nativeSceneWorkBudget?: number
  • property CliRendererConfig.nativeSession?: NativeSession
  • static readonly property CodeRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property DiffRenderable.nativeIntegration: NativeRenderableIntegration
  • static protected readonly property EditBufferRenderable.defaultFocusable = true
  • static readonly property EditBufferRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property EmbeddedTerminalRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property FrameBufferRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property ImageRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property MarkdownRenderable.nativeIntegration: NativeRenderableIntegration
  • property RenderContext.cancelAnimationFrame: (handle: number) => void
  • readonly property RenderContext.nativeScene: NativeScene
  • property RenderContext.requestAnimationFrame: (callback: FrameRequestCallback) => number
  • protected property Renderable._nativeSceneHookGeneration: bigint
  • protected property Renderable._zIndex: number
  • static protected readonly property Renderable.defaultFocusable: boolean
  • static readonly property Renderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property RootRenderable.nativeIntegration: NativeRenderableIntegration
  • static protected readonly property ScrollBarRenderable.defaultFocusable = true
  • static readonly property ScrollBarRenderable.nativeIntegration: NativeRenderableIntegration
  • static protected readonly property ScrollBoxRenderable.defaultFocusable = true
  • static readonly property ScrollBoxRenderable.nativeIntegration: NativeRenderableIntegration
  • static protected readonly property SelectRenderable.defaultFocusable = true
  • static readonly property SliderRenderable.nativeIntegration: NativeRenderableIntegration
  • static protected readonly property TabSelectRenderable.defaultFocusable = true
  • static readonly property TextBufferRenderable.nativeIntegration: NativeRenderableIntegration
  • static readonly property TextRenderable.nativeIntegration: NativeRenderableIntegration
  • readonly property Yoga.Config.dirtied: Map<Pointer, { node: Node; callback: DirtiedFunction; }>
  • readonly property Yoga.Config.measures: Map<Pointer, MeasureFunction>
  • readonly property Yoga.Config.nodes: Map<Pointer, Node>
  • readonly property Yoga.Config.renderLib: RenderLib
  • readonly property Yoga.YogaError.name = "YogaError"
  • readonly property Yoga.YogaError.operation: string
  • readonly property Yoga.YogaError.status: YogaStatus
  • type ContextBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "buffer"; }
  • type ContextEditBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "edit_buffer"; }
  • type ContextEditorViewHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "editor_view"; }
  • type ContextEmbeddedTerminalHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "embedded_terminal"; }
  • type ContextImageHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "image"; }
  • type ContextImagePixelsHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "image_pixels"; }
  • type ContextSyntaxStyleHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "syntax_style"; }
  • type ContextTextBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "text_buffer"; }
  • type ContextTextBufferViewHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "text_buffer_view"; }
  • type ContextUnicodeHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "unicode"; }
  • type NativeBufferDraw = { operation: "clear"; background?: RGBA; } | (BufferDrawPosition & { operation: "fill"; width?: number; height?: number; background?: RGBA; }) | (BufferDrawPosition & BufferDrawColors & { operation: "text"; text?: string; attributes?: number; }) | (BufferDrawPosition & BufferDrawColors & { operation: "cell" | "cellBlend" | "char"; char?: number; attributes?: number; }) | (BufferDrawPosition & BufferDrawColors & { operation: "box"; width?: number; height?: number; titleColor?: RGBA; packedOptions?: number; borderChars?: Uint32Array; text?: string; bottomTitle?: string; }) | (BufferDrawPosition & { operation: "compose"; source: ContextBufferHandle; sourceX?: number; sourceY?: number; sourceWidth?: number; sourceHeight?: number; }) | { operation: "respectAlpha"; enabled: boolean; }
  • type NativeContextBufferLease = NativeSessionBufferLease
  • type NativeContextHandle = { readonly [nativeContextBrand]: true; }
  • type NativeDrawingTarget = { readonly context: NativeContextHandle; readonly target: ContextBufferHandle; readonly frame: null; } | { readonly context: NativeContextHandle; readonly target: SessionHandle; readonly frame: NativeSceneFrameRequest; }
  • type NativeEditEventName = "cursor-changed" | "content-changed" | "cursorChanged"
  • type NativeScenePaintUpdate = Partial<NativeScenePaint> & { resetBorderCharacters?: true; }
  • type NativeSessionControl = { kind: "capability-response"; bytes: Uint8Array; } | { kind: "palette-query"; bytes: Uint8Array; } | { kind: "title"; title: string; } | { kind: "mouse"; mode: "disabled" | "drag" | "motion"; } | { kind: "kitty-keyboard-flags"; flags: number; } | { kind: "restore-modes" | "query-pixel-resolution" | "query-theme-colors" | "reset-background"; }
  • type NativeSessionSplitControl = { kind: "reset"; seedRows: number; pinnedRenderOffset: number; } | { kind: "sync"; pinnedRenderOffset: number; } | { kind: "output-offset"; surfaceOffset: number; } | { kind: "render-offset"; renderOffset: number; } | { kind: "transition"; mode: "viewport-scroll" | "clear-stale-rows"; sourceTopLine: number; sourceHeight: number; targetTopLine: number; targetHeight: number; scrollLines?: number; } | { kind: "clear-transition"; }
  • type RenderLib = Pick<FFIRenderLib, keyof FFIRenderLib>
  • type SceneNodeHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "scene_node"; }
  • type SessionBuffer = "current" | "next"
  • type SessionHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "session"; }

Changed

  • constructor EditBuffer(lib: RenderLib, ptr: EditBufferHandle)constructor EditBuffer(lib: RenderLib, handle: ContextEditBufferHandle, source: NativeResourceOwner)
  • constructor EditorView(lib: RenderLib, ptr: EditorViewHandle, editBuffer: EditBuffer)constructor EditorView(lib: RenderLib, handle: ContextEditorViewHandle, editBuffer: EditBuffer, source: NativeResourceOwner)
  • constructor SyntaxStyle(lib: RenderLib, ptr: SyntaxStyleHandle)constructor SyntaxStyle(lib: RenderLib, handle: ContextSyntaxStyleHandle, source: NativeResourceOwner)
  • constructor TextBuffer(lib: RenderLib, ptr: TextBufferHandle)constructor TextBuffer(lib: RenderLib, handle: ContextTextBufferHandle, source: NativeResourceOwner)
  • constructor TextBufferRenderable(ctx: RenderContext, options: TextBufferOptions)constructor TextBufferRenderable(ctx: RenderContext, options: TextBufferOptions, sharedText?: boolean)
  • constructor TextBufferView(lib: RenderLib, ptr: TextBufferViewHandle, textBuffer: TextBuffer)constructor TextBufferView(lib: RenderLib, handle: ContextTextBufferViewHandle, textBuffer: TextBuffer, source: NativeResourceOwner)
  • enum-member NativeClipboardCancelStatus.AlreadyTerminal = 1enum-member NativeClipboardCancelStatus.AlreadyTerminal
  • enum-member NativeClipboardCancelStatus.InvalidHandle = 2enum-member NativeClipboardCancelStatus.InvalidHandle
  • enum-member NativeClipboardCancelStatus.Requested = 0enum-member NativeClipboardCancelStatus.Requested
  • enum-member NativeClipboardCopyStatus.BufferTooSmall = 1enum-member NativeClipboardCopyStatus.BufferTooSmall
  • enum-member NativeClipboardCopyStatus.InvalidArgument = 4enum-member NativeClipboardCopyStatus.InvalidArgument
  • enum-member NativeClipboardCopyStatus.InvalidHandle = 2enum-member NativeClipboardCopyStatus.InvalidHandle
  • enum-member NativeClipboardCopyStatus.InvalidState = 3enum-member NativeClipboardCopyStatus.InvalidState
  • enum-member NativeClipboardCopyStatus.Ok = 0enum-member NativeClipboardCopyStatus.Ok
  • enum-member NativeClipboardDestroyStatus.Destroyed = 0enum-member NativeClipboardDestroyStatus.Destroyed
  • enum-member NativeClipboardDestroyStatus.InvalidHandle = 2enum-member NativeClipboardDestroyStatus.InvalidHandle
  • enum-member NativeClipboardDestroyStatus.NotReady = 1enum-member NativeClipboardDestroyStatus.NotReady
  • enum-member NativeClipboardOperationStatus.Cancelled = 6enum-member NativeClipboardOperationStatus.Cancelled
  • enum-member NativeClipboardOperationStatus.Cleared = 4enum-member NativeClipboardOperationStatus.Cleared
  • enum-member NativeClipboardOperationStatus.Empty = 2enum-member NativeClipboardOperationStatus.Empty
  • enum-member NativeClipboardOperationStatus.Failed = 9enum-member NativeClipboardOperationStatus.Failed
  • enum-member NativeClipboardOperationStatus.InvalidHandle = 10enum-member NativeClipboardOperationStatus.InvalidHandle
  • enum-member NativeClipboardOperationStatus.LimitExceeded = 8enum-member NativeClipboardOperationStatus.LimitExceeded
  • enum-member NativeClipboardOperationStatus.Pending = 0enum-member NativeClipboardOperationStatus.Pending
  • enum-member NativeClipboardOperationStatus.Read = 1enum-member NativeClipboardOperationStatus.Read
  • enum-member NativeClipboardOperationStatus.TimedOut = 7enum-member NativeClipboardOperationStatus.TimedOut
  • enum-member NativeClipboardOperationStatus.Unsupported = 5enum-member NativeClipboardOperationStatus.Unsupported
  • enum-member NativeClipboardOperationStatus.Written = 3enum-member NativeClipboardOperationStatus.Written
  • enum-member NativeClipboardShutdownStatus.InvalidHandle = 2enum-member NativeClipboardShutdownStatus.InvalidHandle
  • enum-member NativeClipboardShutdownStatus.Pending = 0enum-member NativeClipboardShutdownStatus.Pending
  • enum-member NativeClipboardShutdownStatus.Ready = 1enum-member NativeClipboardShutdownStatus.Ready
  • enum-member NativeClipboardStartStatus.InvalidArgument = 4enum-member NativeClipboardStartStatus.InvalidArgument
  • enum-member NativeClipboardStartStatus.InvalidService = 1enum-member NativeClipboardStartStatus.InvalidService
  • enum-member NativeClipboardStartStatus.LimitExceeded = 3enum-member NativeClipboardStartStatus.LimitExceeded
  • enum-member NativeClipboardStartStatus.Ok = 0enum-member NativeClipboardStartStatus.Ok
  • enum-member NativeClipboardStartStatus.OutOfMemory = 5enum-member NativeClipboardStartStatus.OutOfMemory
  • enum-member NativeClipboardStartStatus.ShuttingDown = 2enum-member NativeClipboardStartStatus.ShuttingDown
  • enum-member Yoga.Align.Auto = 0enum-member Yoga.Align.Auto
  • enum-member Yoga.Align.Baseline = 5enum-member Yoga.Align.Baseline
  • enum-member Yoga.Align.Center = 2enum-member Yoga.Align.Center
  • enum-member Yoga.Align.FlexEnd = 3enum-member Yoga.Align.FlexEnd
  • enum-member Yoga.Align.FlexStart = 1enum-member Yoga.Align.FlexStart
  • enum-member Yoga.Align.SpaceAround = 7enum-member Yoga.Align.SpaceAround
  • enum-member Yoga.Align.SpaceBetween = 6enum-member Yoga.Align.SpaceBetween
  • enum-member Yoga.Align.SpaceEvenly = 8enum-member Yoga.Align.SpaceEvenly
  • enum-member Yoga.Align.Stretch = 4enum-member Yoga.Align.Stretch
  • enum-member Yoga.BoxSizing.BorderBox = 0enum-member Yoga.BoxSizing.BorderBox
  • enum-member Yoga.BoxSizing.ContentBox = 1enum-member Yoga.BoxSizing.ContentBox
  • enum-member Yoga.Dimension.Height = 1enum-member Yoga.Dimension.Height
  • enum-member Yoga.Dimension.Width = 0enum-member Yoga.Dimension.Width
  • enum-member Yoga.Direction.Inherit = 0enum-member Yoga.Direction.Inherit
  • enum-member Yoga.Direction.LTR = 1enum-member Yoga.Direction.LTR
  • enum-member Yoga.Direction.RTL = 2enum-member Yoga.Direction.RTL
  • enum-member Yoga.Edge.All = 8enum-member Yoga.Edge.All
  • enum-member Yoga.Edge.Bottom = 3enum-member Yoga.Edge.Bottom
  • enum-member Yoga.Edge.End = 5enum-member Yoga.Edge.End
  • enum-member Yoga.Edge.Horizontal = 6enum-member Yoga.Edge.Horizontal
  • enum-member Yoga.Edge.Left = 0enum-member Yoga.Edge.Left
  • enum-member Yoga.Edge.Right = 2enum-member Yoga.Edge.Right
  • enum-member Yoga.Edge.Start = 4enum-member Yoga.Edge.Start
  • enum-member Yoga.Edge.Top = 1enum-member Yoga.Edge.Top
  • enum-member Yoga.Edge.Vertical = 7enum-member Yoga.Edge.Vertical
  • enum-member Yoga.FlexDirection.Column = 0enum-member Yoga.FlexDirection.Column
  • enum-member Yoga.FlexDirection.ColumnReverse = 1enum-member Yoga.FlexDirection.ColumnReverse
  • enum-member Yoga.FlexDirection.Row = 2enum-member Yoga.FlexDirection.Row
  • enum-member Yoga.FlexDirection.RowReverse = 3enum-member Yoga.FlexDirection.RowReverse
  • enum-member Yoga.Gutter.All = 2enum-member Yoga.Gutter.All
  • enum-member Yoga.Gutter.Column = 0enum-member Yoga.Gutter.Column
  • enum-member Yoga.Gutter.Row = 1enum-member Yoga.Gutter.Row
  • enum-member Yoga.Justify.Center = 1enum-member Yoga.Justify.Center
  • enum-member Yoga.Justify.FlexEnd = 2enum-member Yoga.Justify.FlexEnd
  • enum-member Yoga.Justify.FlexStart = 0enum-member Yoga.Justify.FlexStart
  • enum-member Yoga.Justify.SpaceAround = 4enum-member Yoga.Justify.SpaceAround
  • enum-member Yoga.Justify.SpaceBetween = 3enum-member Yoga.Justify.SpaceBetween
  • enum-member Yoga.Justify.SpaceEvenly = 5enum-member Yoga.Justify.SpaceEvenly
  • enum-member Yoga.MeasureMode.AtMost = 2enum-member Yoga.MeasureMode.AtMost
  • enum-member Yoga.MeasureMode.Exactly = 1enum-member Yoga.MeasureMode.Exactly
  • enum-member Yoga.MeasureMode.Undefined = 0enum-member Yoga.MeasureMode.Undefined
  • enum-member Yoga.Overflow.Hidden = 1enum-member Yoga.Overflow.Hidden
  • enum-member Yoga.Overflow.Scroll = 2enum-member Yoga.Overflow.Scroll
  • enum-member Yoga.Overflow.Visible = 0enum-member Yoga.Overflow.Visible
  • enum-member Yoga.PositionType.Absolute = 2enum-member Yoga.PositionType.Absolute
  • enum-member Yoga.PositionType.Relative = 1enum-member Yoga.PositionType.Relative
  • enum-member Yoga.PositionType.Static = 0enum-member Yoga.PositionType.Static
  • enum-member Yoga.Unit.Auto = 3enum-member Yoga.Unit.Auto
  • enum-member Yoga.Unit.Percent = 2enum-member Yoga.Unit.Percent
  • enum-member Yoga.Unit.Point = 1enum-member Yoga.Unit.Point
  • enum-member Yoga.Unit.Undefined = 0enum-member Yoga.Unit.Undefined
  • enum-member Yoga.Wrap.NoWrap = 0enum-member Yoga.Wrap.NoWrap
  • enum-member Yoga.Wrap.Wrap = 1enum-member Yoga.Wrap.Wrap
  • enum-member Yoga.Wrap.WrapReverse = 2enum-member Yoga.Wrap.WrapReverse
  • function createTimeline(options?: TimelineOptions): Timelinefunction createTimeline(options?: TimelineOptions, renderer?: CliRenderer): Timeline
  • function imageInfo(data: Uint8Array | ArrayBuffer): ImageInfofunction imageInfo(data: Uint8Array | ArrayBuffer, options?: ImageCreateOptions): ImageInfo
  • interface AudioEngineLibinterface AudioEngineLib extends Pick<FFIRenderLib, Extract<keyof FFIRenderLib, `audio${string}` | "createAudioEngine" | "destroyAudioEngine">>
  • interface ImageLoadOptionsinterface ImageLoadOptions extends ImageCreateOptions
  • interface NativeImagePoolOptionsinterface NativeImagePoolOptions extends ImageCreateOptions
  • interface PixelImportOptionsinterface PixelImportOptions extends ImageCreateOptions
  • method CliRenderer.resume(): voidmethod CliRenderer.resume(): Promise<void>
  • method CliRenderer.suspend(): voidmethod CliRenderer.suspend(): Promise<void>
  • static method EditBuffer.create(widthMethod: WidthMethod): EditBufferstatic method EditBuffer.create(widthMethod: WidthMethod, source: NativeResourceOwner): EditBuffer
  • method ExtmarksController.adjustExtmarksAfterDeletion(deleteOffset: number, length: number): voidmethod ExtmarksController.adjustExtmarksAfterDeletion(deleteOffset: number, length: number, updateHighlights?: boolean): void
  • static method NativeImage.decode(data: Uint8Array | ArrayBuffer): NativeImagestatic method NativeImage.decode(data: Uint8Array | ArrayBuffer, options?: ImageCreateOptions): NativeImage
  • static method NativeImage.fromRgba(pixels: Uint8Array, width: number, height: number, stride?: number): NativeImagestatic method NativeImage.fromRgba(pixels: Uint8Array, width: number, height: number, stride?: number, options?: ImageCreateOptions): NativeImage
  • static method OptimizedBuffer.create(width: number, height: number, widthMethod: WidthMethod, options?: { respectAlpha?: boolean; id?: string; }): OptimizedBufferstatic method OptimizedBuffer.create(width: number, height: number, widthMethod: WidthMethod, options: { respectAlpha?: boolean; id?: string; owner: NativeResourceOwner; }): OptimizedBuffer
  • method OptimizedBuffer.drawGrid(options: { borderChars: Uint32Array; borderFg: RGBA; borderBg: RGBA; columnOffsets: Int32Array; rowOffsets: Int32Array; drawInner: boolean; drawOuter: boolean; }): voidmethod OptimizedBuffer.drawGrid(options: NativeBufferGrid): void
  • method OptimizedBuffer.encodeUnicode(text: string): { ptr: Pointer; data: Array<{ width: number; char: number; }>; } | nullmethod OptimizedBuffer.encodeUnicode(text: string): EncodedUnicode
  • method OptimizedBuffer.freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number; }>; }): voidmethod OptimizedBuffer.freeUnicode(encoded: EncodedUnicode): void
  • static method SyntaxStyle.create(): SyntaxStylestatic method SyntaxStyle.create(source: NativeResourceOwner): SyntaxStyle
  • static method SyntaxStyle.fromStyles(styles: Record<string, StyleDefinitionInput>): SyntaxStylestatic method SyntaxStyle.fromStyles(styles: Record<string, StyleDefinitionInput> | Map<string, StyleDefinitionInput>, owner: NativeResourceOwner): SyntaxStyle
  • static method SyntaxStyle.fromTheme(theme: ThemeTokenStyle[]): SyntaxStylestatic method SyntaxStyle.fromTheme(theme: ThemeTokenStyle[], owner: NativeResourceOwner): SyntaxStyle
  • static method TextBuffer.create(widthMethod: WidthMethod): TextBufferstatic method TextBuffer.create(widthMethod: WidthMethod, source: NativeResourceOwner): TextBuffer
  • protected method TextBufferRenderable.updateViewportOffset(): voidprotected method TextBufferRenderable.updateViewportOffset(scrollX?: number, scrollY?: number): void
  • static method Yoga.Config.create(): Configstatic method Yoga.Config.create(renderLib?: RenderLib): Config
  • protected property ASCIIFontRenderable._backgroundColor: ColorInputprotected property ASCIIFontRenderable._backgroundColor: RGBA
  • protected property ASCIIFontRenderable._color: ColorInput | ColorInput[]protected property ASCIIFontRenderable._color: RGBA | RGBA[]
  • protected property ASCIIFontRenderable._selectionBg: ColorInput | undefinedprotected property ASCIIFontRenderable._selectionBg: RGBA | undefined
  • protected property ASCIIFontRenderable._selectionFg: ColorInput | undefinedprotected property ASCIIFontRenderable._selectionFg: RGBA | undefined
  • protected property Renderable._screenX: numberprotected readonly property Renderable._screenX: number
  • protected property Renderable._screenY: numberprotected readonly property Renderable._screenY: number
  • readonly property SliderRenderable.orientation: "vertical" | "horizontal"property SliderRenderable.orientation: "vertical" | "horizontal"
  • type ImageHandle = NativeHandle<"image">type ImageHandle = ContextImageHandle
  • type NativeSpanFeedStats = { bytesWritten: bigint; spansCommitted: bigint; chunks: number; pendingSpans: number; }type NativeSpanFeedStats = { bytesWritten: bigint; spansCommitted: bigint; chunks: number; pendingSpans: number; outstandingSpans: number; outstandingBytes: bigint; }

Removed

  • class Clipboard
  • const NativeMeasureTargetKind: { readonly None: 0; readonly TextBufferView: 1; readonly EditorView: 2; }
  • constructor Clipboard(lib: RenderLib, rendererPtr: RendererHandle)
  • constructor OptimizedBuffer(lib: RenderLib, ptr: OptimizedBufferHandle, width: number, height: number, options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod; })
  • interface NativeRenderOperationResult
  • interface NativeRendererCreateOptions
  • interface RenderLib extends AudioEngineLib
  • protected method BoxRenderable.getScissorRect(): { x: number; y: number; width: number; height: number; }
  • method CliRenderer.addToHitGrid(x: number, y: number, width: number, height: number, id: number): void
  • method CliRenderer.clearHitGridScissorRects(): void
  • method CliRenderer.dumpBuffers(timestamp?: number): void
  • method CliRenderer.dumpOutputBuffer(timestamp?: number): void
  • method CliRenderer.popHitGridScissorRect(): void
  • method CliRenderer.pushHitGridScissorRect(x: number, y: number, width: number, height: number): void
  • method CodeRenderable.destroy(): void
  • method EditBufferRenderable.destroy(): void
  • protected method EditBufferRenderable.onRemove(): void
  • method EditBufferRenderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • protected method EditBufferRenderable.renderCursor(buffer: OptimizedBuffer): void
  • method EmbeddedTerminalRenderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • protected method FrameBufferRenderable.destroySelf(): void
  • method ImageRenderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • method InputRenderable.handlePaste(event: PasteEvent): void
  • protected method MarkdownRenderable.renderSelf(buffer: OptimizedBuffer, deltaTime: number): void
  • protected method Renderable._getVisibleChildren(): number[]
  • protected method Renderable._hasVisibleChildFilter(): boolean
  • method Renderable.canReuseRenderCommandList(): boolean
  • method Renderable.getLayoutNode(): YogaNode
  • protected method Renderable.getScissorRect(): { x: number; y: number; width: number; height: number; }
  • method Renderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • method Renderable.updateFromLayout(): void
  • method Renderable.updateLayout(deltaTime: number, renderList?: RenderCommand[]): void
  • method RootRenderable.calculateLayout(): void
  • method RootRenderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • method TextBufferRenderable.destroy(): void
  • method TextBufferRenderable.render(buffer: OptimizedBuffer, deltaTime: number): void
  • method TextRenderable.destroy(): void
  • property AudioEngineLib.audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => void
  • property AudioEngineLib.audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => void
  • property AudioEngineLib.audioCloseStream: (engine: AudioEngineHandle, streamId: number, reason: NativeAudioStreamCloseReason) => { status: number; stats: NativeAudioStreamStats | null; }
  • property AudioEngineLib.audioCreateGroup: (engine: AudioEngineHandle, name: string) => { status: number; groupId: number | null; }
  • property AudioEngineLib.audioCreateStream: (engine: AudioEngineHandle, options: AudioStreamCreateOptions) => { status: number; streamId: number | null; }
  • property AudioEngineLib.audioEnableTap: (engine: AudioEngineHandle, enabled: boolean, capacityFrames: number) => number
  • property AudioEngineLib.audioEndStream: (engine: AudioEngineHandle, streamId: number) => number
  • property AudioEngineLib.audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => string
  • property AudioEngineLib.audioGetCaptureStats: (engine: AudioEngineHandle) => { status: number; stats: NativeAudioCaptureStats | null; }
  • property AudioEngineLib.audioGetPlaybackDeviceCount: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioGetPlaybackDeviceName: (engine: AudioEngineHandle, index: number) => string
  • property AudioEngineLib.audioGetStats: (engine: AudioEngineHandle) => AudioStats | null
  • property AudioEngineLib.audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | null
  • property AudioEngineLib.audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean
  • property AudioEngineLib.audioIsCaptureRunning: (engine: AudioEngineHandle) => boolean
  • property AudioEngineLib.audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean
  • property AudioEngineLib.audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => { status: number; soundId: number | null; }
  • property AudioEngineLib.audioMixToBuffer: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => number
  • property AudioEngineLib.audioPlay: (engine: AudioEngineHandle, soundId: number, options?: AudioVoiceOptions) => { status: number; voiceId: number | null; }
  • property AudioEngineLib.audioReadCapture: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number) => { status: number; framesRead: number; }
  • property AudioEngineLib.audioReadTap: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => { status: number; framesRead: number; }
  • property AudioEngineLib.audioRefreshCaptureDevices: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioRefreshPlaybackDevices: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioRestartStream: (engine: AudioEngineHandle, streamId: number) => number
  • property AudioEngineLib.audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => number
  • property AudioEngineLib.audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => number
  • property AudioEngineLib.audioSetGroupVolume: (engine: AudioEngineHandle, groupId: number, volume: number) => number
  • property AudioEngineLib.audioSetMasterVolume: (engine: AudioEngineHandle, volume: number) => number
  • property AudioEngineLib.audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => number
  • property AudioEngineLib.audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => number
  • property AudioEngineLib.audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => number
  • property AudioEngineLib.audioSetVoiceGroup: (engine: AudioEngineHandle, voiceId: number, groupId: number) => number
  • property AudioEngineLib.audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number
  • property AudioEngineLib.audioStartCapture: (engine: AudioEngineHandle, options: AudioStartOptions | undefined, channels: number, capacityFrames: number) => number
  • property AudioEngineLib.audioStartMixer: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioStop: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioStopCapture: (engine: AudioEngineHandle) => number
  • property AudioEngineLib.audioStopVoice: (engine: AudioEngineHandle, voiceId: number) => number
  • property AudioEngineLib.audioUnload: (engine: AudioEngineHandle, soundId: number) => number
  • property AudioEngineLib.audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => number
  • property AudioEngineLib.createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null
  • property AudioEngineLib.destroyAudioEngine: (engine: AudioEngineHandle) => void
  • property CliRenderer.rendererPtr: RendererHandle
  • property CliRenderer.useThread: boolean
  • property CliRendererConfig.useThread?: boolean
  • readonly property EditBuffer.ptr: EditBufferHandle
  • protected property EditBufferRenderable._focusable: boolean
  • property EditBufferRenderable.selectable: boolean
  • readonly property EditorView.ptr: EditorViewHandle
  • property RenderContext.addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void
  • property RenderContext.clearHitGridScissorRects: () => void
  • property RenderContext.popHitGridScissorRect: () => void
  • property RenderContext.pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => void
  • protected property Renderable._childrenInZIndexOrder: Renderable[]
  • protected property Renderable._heightValue: number
  • protected property Renderable._widthValue: number
  • protected property Renderable._x: number
  • protected property Renderable._y: number
  • protected property Renderable.yogaNode: YogaNode
  • protected property ScrollBarRenderable._focusable: boolean
  • protected property ScrollBoxRenderable._focusable: boolean
  • protected property SelectRenderable._focusable: boolean
  • readonly property SyntaxStyle.ptr: SyntaxStyleHandle
  • protected property TabSelectRenderable._focusable: boolean
  • readonly property TextBuffer.ptr: TextBufferHandle
  • property TextBufferRenderable.selectable: boolean
  • readonly property TextBufferView.ptr: TextBufferViewHandle
  • property TextRenderable.onLifecyclePass: () => void
  • type EditBufferHandle = NativeHandle<"edit_buffer">
  • type EditorViewHandle = NativeHandle<"editor_view">
  • type EmbeddedTerminalHandle = NativeHandle<"embedded_terminal">
  • type EventSinkHandle = NativeHandle<"event_sink">
  • type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle
  • type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind]
  • type NativeRenderableHandle = NativeHandle<"native_renderable">
  • type OptimizedBufferHandle = NativeHandle<"optimized_buffer">
  • type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender | RenderCommandPushOpacity | RenderCommandPopOpacity
  • type RendererHandle = NativeHandle<"renderer">
  • type SyntaxStyleHandle = NativeHandle<"syntax_style">
  • type TextBufferHandle = NativeHandle<"text_buffer">
  • type TextBufferViewHandle = NativeHandle<"text_buffer_view">

@opentui/core/testing#

Added

  • readonly property ManualClock.pendingTimerCount: number
  • property TestRendererSetup.[Symbol.asyncDispose]: () => Promise<void>
  • property TestRendererSetup.dispose: () => Promise<void>

@opentui/core/yoga#

Added

  • class YogaError extends Error
  • constructor YogaError(operation: string, status: YogaStatus)
  • enum YogaStatus
  • method Config.assertAlive(): void
  • method Config.assertUnused(): void
  • method Config.ensureCallbacks(): void
  • static method Config.fromBorrowedPointer(ptr: Pointer, renderLib?: RenderLib): Config
  • method Node.assertMutable(): void
  • method Node.runMutation<T>(operation: () => T): T
  • readonly property Config.dirtied: Map<Pointer, { node: Node; callback: DirtiedFunction; }>
  • readonly property Config.measures: Map<Pointer, MeasureFunction>
  • readonly property Config.nodes: Map<Pointer, Node>
  • readonly property Config.renderLib: RenderLib

Changed

  • enum-member Align.Auto = 0enum-member Align.Auto
  • enum-member Align.Baseline = 5enum-member Align.Baseline
  • enum-member Align.Center = 2enum-member Align.Center
  • enum-member Align.FlexEnd = 3enum-member Align.FlexEnd
  • enum-member Align.FlexStart = 1enum-member Align.FlexStart
  • enum-member Align.SpaceAround = 7enum-member Align.SpaceAround
  • enum-member Align.SpaceBetween = 6enum-member Align.SpaceBetween
  • enum-member Align.SpaceEvenly = 8enum-member Align.SpaceEvenly
  • enum-member Align.Stretch = 4enum-member Align.Stretch
  • enum-member BoxSizing.BorderBox = 0enum-member BoxSizing.BorderBox
  • enum-member BoxSizing.ContentBox = 1enum-member BoxSizing.ContentBox
  • enum-member Dimension.Height = 1enum-member Dimension.Height
  • enum-member Dimension.Width = 0enum-member Dimension.Width
  • enum-member Direction.Inherit = 0enum-member Direction.Inherit
  • enum-member Direction.LTR = 1enum-member Direction.LTR
  • enum-member Direction.RTL = 2enum-member Direction.RTL
  • enum-member Edge.All = 8enum-member Edge.All
  • enum-member Edge.Bottom = 3enum-member Edge.Bottom
  • enum-member Edge.End = 5enum-member Edge.End
  • enum-member Edge.Horizontal = 6enum-member Edge.Horizontal
  • enum-member Edge.Left = 0enum-member Edge.Left
  • enum-member Edge.Right = 2enum-member Edge.Right
  • enum-member Edge.Start = 4enum-member Edge.Start
  • enum-member Edge.Top = 1enum-member Edge.Top
  • enum-member Edge.Vertical = 7enum-member Edge.Vertical
  • enum-member FlexDirection.Column = 0enum-member FlexDirection.Column
  • enum-member FlexDirection.ColumnReverse = 1enum-member FlexDirection.ColumnReverse
  • enum-member FlexDirection.Row = 2enum-member FlexDirection.Row
  • enum-member FlexDirection.RowReverse = 3enum-member FlexDirection.RowReverse
  • enum-member Gutter.All = 2enum-member Gutter.All
  • enum-member Gutter.Column = 0enum-member Gutter.Column
  • enum-member Gutter.Row = 1enum-member Gutter.Row
  • enum-member Justify.Center = 1enum-member Justify.Center
  • enum-member Justify.FlexEnd = 2enum-member Justify.FlexEnd
  • enum-member Justify.FlexStart = 0enum-member Justify.FlexStart
  • enum-member Justify.SpaceAround = 4enum-member Justify.SpaceAround
  • enum-member Justify.SpaceBetween = 3enum-member Justify.SpaceBetween
  • enum-member Justify.SpaceEvenly = 5enum-member Justify.SpaceEvenly
  • enum-member MeasureMode.AtMost = 2enum-member MeasureMode.AtMost
  • enum-member MeasureMode.Exactly = 1enum-member MeasureMode.Exactly
  • enum-member MeasureMode.Undefined = 0enum-member MeasureMode.Undefined
  • enum-member Overflow.Hidden = 1enum-member Overflow.Hidden
  • enum-member Overflow.Scroll = 2enum-member Overflow.Scroll
  • enum-member Overflow.Visible = 0enum-member Overflow.Visible
  • enum-member PositionType.Absolute = 2enum-member PositionType.Absolute
  • enum-member PositionType.Relative = 1enum-member PositionType.Relative
  • enum-member PositionType.Static = 0enum-member PositionType.Static
  • enum-member Unit.Auto = 3enum-member Unit.Auto
  • enum-member Unit.Percent = 2enum-member Unit.Percent
  • enum-member Unit.Point = 1enum-member Unit.Point
  • enum-member Unit.Undefined = 0enum-member Unit.Undefined
  • enum-member Wrap.NoWrap = 0enum-member Wrap.NoWrap
  • enum-member Wrap.Wrap = 1enum-member Wrap.Wrap
  • enum-member Wrap.WrapReverse = 2enum-member Wrap.WrapReverse
  • static method Config.create(): Configstatic method Config.create(renderLib?: RenderLib): Config

@opentui/solid#

Added

  • const RenderableContext: Context<(() => RenderContext) | undefined>
  • function _render(code: () => DomNode, root: DomNode): () => void
  • function removeNode(parent: DomNode, node: DomNode): void
  • protected method LayoutSlotRenderable.destroySelf(): void
  • method TextSlotRenderable.destroyRecursively(): void

Changed

  • class LayoutSlotRenderable extends SlotBaseRenderableclass LayoutSlotRenderable extends Renderable
  • const createComponent: <T>(Comp: (props: T) => BaseRenderable, props: T) => BaseRenderableconst createComponent: <T>(Comp: (props: T) => unknown, props: T) => BaseRenderable
  • constructor LayoutSlotRenderable(id: string, parent?: SlotRenderable, layoutParent?: BaseRenderable)constructor LayoutSlotRenderable(id: string, parent: SlotRenderable, layoutParent: Renderable)
  • method SlotRenderable.didDestroySlotChild(child: LayoutSlotRenderable | TextSlotRenderable): voidmethod SlotRenderable.didDestroySlotChild(child: BaseRenderable): void

Removed

  • const _render: (code: () => BaseRenderable, node: BaseRenderable) => () => void
  • method LayoutSlotRenderable.destroy(): void
  • method LayoutSlotRenderable.destroyRecursively(): void
  • method LayoutSlotRenderable.detachFromSlot(): void
  • method LayoutSlotRenderable.getLayoutNode(): Yoga.Node
  • method LayoutSlotRenderable.onRemove(): void
  • method LayoutSlotRenderable.updateFromLayout(): void
  • method LayoutSlotRenderable.updateLayout(): void
  • protected property LayoutSlotRenderable.destroyed: boolean
  • protected property LayoutSlotRenderable.slotParent?: SlotRenderable
  • protected property LayoutSlotRenderable.yogaNode: Yoga.Node

@opentui/ssh#

Added

  • class OutputPressureError extends SshError
  • constructor OutputPressureError()

opentui.h#

Added

  • const OT_ALIGN_AUTO = 0
  • const OT_ALIGN_BASELINE = 5
  • const OT_ALIGN_CENTER = 2
  • const OT_ALIGN_FLEX_END = 3
  • const OT_ALIGN_FLEX_START = 1
  • const OT_ALIGN_SPACE_AROUND = 7
  • const OT_ALIGN_SPACE_BETWEEN = 6
  • const OT_ALIGN_SPACE_EVENLY = 8
  • const OT_ALIGN_STRETCH = 4
  • const OT_BORDER_ALL = 15
  • const OT_BORDER_BOTTOM = 2
  • const OT_BORDER_DOUBLE = 1
  • const OT_BORDER_HEAVY = 3
  • const OT_BORDER_LEFT = 1
  • const OT_BORDER_NONE = 0
  • const OT_BORDER_RIGHT = 4
  • const OT_BORDER_ROUNDED = 2
  • const OT_BORDER_SINGLE = 0
  • const OT_BORDER_TOP = 8
  • const OT_BOX_SIZING_BORDER_BOX = 0
  • const OT_BOX_SIZING_CONTENT_BOX = 1
  • const OT_BUFFER_DRAW_BOX = 6
  • const OT_BUFFER_DRAW_CELL = 3
  • const OT_BUFFER_DRAW_CELL_BLEND = 4
  • const OT_BUFFER_DRAW_CHAR = 5
  • const OT_BUFFER_DRAW_CLEAR = 0
  • const OT_BUFFER_DRAW_COMPOSE = 7
  • const OT_BUFFER_DRAW_FILL = 1
  • const OT_BUFFER_DRAW_HAS_BACKGROUND = 1
  • const OT_BUFFER_DRAW_HAS_SOURCE_HEIGHT = 4
  • const OT_BUFFER_DRAW_HAS_SOURCE_WIDTH = 2
  • const OT_BUFFER_DRAW_RESPECT_ALPHA = 8
  • const OT_BUFFER_DRAW_TEXT = 2
  • const OT_BUFFER_GRID_INNER = 1
  • const OT_BUFFER_GRID_OUTER = 2
  • const OT_BUFFER_RESPECT_ALPHA = 1
  • const OT_BUFFER_STACK_CLEAR_OPACITY = 6
  • const OT_BUFFER_STACK_CLEAR_SCISSORS = 3
  • const OT_BUFFER_STACK_DEPTH_MAX = 256
  • const OT_BUFFER_STACK_GET_OPACITY = 0
  • const OT_BUFFER_STACK_POP_OPACITY = 5
  • const OT_BUFFER_STACK_POP_SCISSOR = 2
  • const OT_BUFFER_STACK_PUSH_OPACITY = 4
  • const OT_BUFFER_STACK_PUSH_SCISSOR = 1
  • const OT_BUFFER_TEXT_BYTES_MAX = 65536
  • const OT_CAP_ANSI256 = 8
  • const OT_CAP_BRACKETED_PASTE = 2048
  • const OT_CAP_COLOR_SCHEME_UPDATES = 32
  • const OT_CAP_EXPLICIT_CURSOR_POSITIONING = 32768
  • const OT_CAP_EXPLICIT_WIDTH = 64
  • const OT_CAP_FOCUS_TRACKING = 512
  • const OT_CAP_HYPERLINKS = 4096
  • const OT_CAP_KITTY_GRAPHICS = 2
  • const OT_CAP_KITTY_KEYBOARD = 1
  • const OT_CAP_NOTIFICATIONS = 16384
  • const OT_CAP_OSC52 = 8192
  • const OT_CAP_REMOTE = 65536
  • const OT_CAP_RGB = 4
  • const OT_CAP_SCALED_TEXT = 128
  • const OT_CAP_SGR_PIXELS = 16
  • const OT_CAP_SIXEL = 256
  • const OT_CAP_SYNC = 1024
  • const OT_CLIPBOARD_CANCEL_ALREADY_TERMINAL = 1
  • const OT_CLIPBOARD_CANCEL_INVALID_HANDLE = 2
  • const OT_CLIPBOARD_CANCEL_REQUESTED = 0
  • const OT_CLIPBOARD_COPY_BUFFER_TOO_SMALL = 1
  • const OT_CLIPBOARD_COPY_INVALID_ARGUMENT = 4
  • const OT_CLIPBOARD_COPY_INVALID_HANDLE = 2
  • const OT_CLIPBOARD_COPY_INVALID_STATE = 3
  • const OT_CLIPBOARD_COPY_OK = 0
  • const OT_CLIPBOARD_DESTROY_DESTROYED = 0
  • const OT_CLIPBOARD_DESTROY_INVALID_HANDLE = 2
  • const OT_CLIPBOARD_DESTROY_NOT_READY = 1
  • const OT_CLIPBOARD_OPERATION_CANCELLED = 6
  • const OT_CLIPBOARD_OPERATION_CLEARED = 4
  • const OT_CLIPBOARD_OPERATION_EMPTY = 2
  • const OT_CLIPBOARD_OPERATION_FAILED = 9
  • const OT_CLIPBOARD_OPERATION_INVALID_HANDLE = 10
  • const OT_CLIPBOARD_OPERATION_LIMIT_EXCEEDED = 8
  • const OT_CLIPBOARD_OPERATION_PENDING = 0
  • const OT_CLIPBOARD_OPERATION_READ = 1
  • const OT_CLIPBOARD_OPERATION_TIMED_OUT = 7
  • const OT_CLIPBOARD_OPERATION_UNSUPPORTED = 5
  • const OT_CLIPBOARD_OPERATION_WRITTEN = 3
  • const OT_CLIPBOARD_SHUTDOWN_INVALID_HANDLE = 2
  • const OT_CLIPBOARD_SHUTDOWN_PENDING = 0
  • const OT_CLIPBOARD_SHUTDOWN_READY = 1
  • const OT_CLIPBOARD_START_INVALID_ARGUMENT = 4
  • const OT_CLIPBOARD_START_INVALID_SERVICE = 1
  • const OT_CLIPBOARD_START_LIMIT_EXCEEDED = 3
  • const OT_CLIPBOARD_START_OK = 0
  • const OT_CLIPBOARD_START_OUT_OF_MEMORY = 5
  • const OT_CLIPBOARD_START_SHUTTING_DOWN = 2
  • const OT_COLOR_CHANNEL_MASK = 255
  • const OT_COLOR_DEFAULT = 2
  • const OT_COLOR_INDEXED = 1
  • const OT_COLOR_META_SHIFT = 8
  • const OT_COLOR_RGB = 0
  • const OT_CONTEXT_ABI_VERSION = 1
  • const OT_CONTEXT_BUSY = -6
  • const OT_CONTROL_CAPABILITY_RESPONSE = 1
  • const OT_CONTROL_CURSOR = 8
  • const OT_CONTROL_KITTY_KEYBOARD_FLAGS = 4
  • const OT_CONTROL_MOUSE = 3
  • const OT_CONTROL_PACKET_LIMIT = -20
  • const OT_CONTROL_PALETTE_QUERY = 10
  • const OT_CONTROL_QUERY_PIXEL_RESOLUTION = 6
  • const OT_CONTROL_QUERY_THEME_COLORS = 7
  • const OT_CONTROL_RESET_BACKGROUND = 9
  • const OT_CONTROL_RESTORE_MODES = 5
  • const OT_CONTROL_TITLE = 2
  • const OT_CURSOR_BLINKING = 4
  • const OT_CURSOR_COLOR = 8
  • const OT_CURSOR_MOUSE_POINTER = 16
  • const OT_CURSOR_POSITION = 1
  • const OT_CURSOR_STYLE = 2
  • const OT_DIAGNOSTIC_MESSAGE_BYTES = 4096
  • const OT_DIAGNOSTIC_TRUNCATED = 1
  • const OT_DIMENSION_HEIGHT = 1
  • const OT_DIMENSION_WIDTH = 0
  • const OT_DIRECTION_INHERIT = 0
  • const OT_DIRECTION_LTR = 1
  • const OT_DIRECTION_RTL = 2
  • const OT_DISPLAY_FLEX = 0
  • const OT_DISPLAY_NONE = 1
  • const OT_EDGE_ALL = 8
  • const OT_EDGE_BOTTOM = 3
  • const OT_EDGE_END = 5
  • const OT_EDGE_HORIZONTAL = 6
  • const OT_EDGE_LEFT = 0
  • const OT_EDGE_NONE = 0
  • const OT_EDGE_RIGHT = 2
  • const OT_EDGE_START = 4
  • const OT_EDGE_TOP = 1
  • const OT_EDGE_VERTICAL = 7
  • const OT_EDITOR_CURSOR_OFFSET = 4
  • const OT_EDITOR_DELETE_SELECTION = 3
  • const OT_EDITOR_GOTO_LINE_END = 2
  • const OT_EDITOR_MOVE_DOWN = 1
  • const OT_EDITOR_MOVE_UP = 0
  • const OT_EDITOR_POSITION_CURSOR = 0
  • const OT_EDITOR_POSITION_EOL = 3
  • const OT_EDITOR_POSITION_NEXT_WORD = 1
  • const OT_EDITOR_POSITION_PREV_WORD = 2
  • const OT_EDITOR_POSITION_VISUAL_EOL = 5
  • const OT_EDITOR_POSITION_VISUAL_SOL = 4
  • const OT_EDITOR_SELECT_CELL = 6
  • const OT_EDITOR_SELECT_COLORS = 9
  • const OT_EDITOR_SELECT_INCLUSIVE = 8
  • const OT_EDITOR_SELECT_LOCAL = 3
  • const OT_EDITOR_SELECT_LOCAL_RESET = 5
  • const OT_EDITOR_SELECT_LOCAL_UPDATE = 4
  • const OT_EDITOR_SELECT_OCCUPANCY = 7
  • const OT_EDITOR_SELECT_RESET = 2
  • const OT_EDITOR_SELECT_SET = 0
  • const OT_EDITOR_SELECT_UPDATE = 1
  • const OT_EDITOR_STYLE_ATTRIBUTES = 4
  • const OT_EDITOR_STYLE_BACKGROUND = 2
  • const OT_EDITOR_STYLE_FOREGROUND = 1
  • const OT_EDITOR_TAB_INDICATOR = 6
  • const OT_EDITOR_WRAP_MODE = 5
  • const OT_EDIT_BACKSPACE = 1
  • const OT_EDIT_CLEAR = 10
  • const OT_EDIT_CLEAR_HISTORY = 11
  • const OT_EDIT_CONTENT_CHANGED = 2
  • const OT_EDIT_CURSOR_CHANGED = 1
  • const OT_EDIT_CURSOR_OFFSET = 9
  • const OT_EDIT_DEBUG_ROPE = 12
  • const OT_EDIT_DELETE_FORWARD = 0
  • const OT_EDIT_DELETE_LINE = 3
  • const OT_EDIT_GOTO_LINE = 8
  • const OT_EDIT_HIGHLIGHT_ADD_LINE = 0
  • const OT_EDIT_HIGHLIGHT_ADD_RANGE = 1
  • const OT_EDIT_HIGHLIGHT_CLEAR_ALL = 4
  • const OT_EDIT_HIGHLIGHT_CLEAR_LINE = 3
  • const OT_EDIT_HIGHLIGHT_REMOVE_REF = 2
  • const OT_EDIT_HISTORY_CURSOR_CHANGED = 4
  • const OT_EDIT_MOVE_DOWN = 7
  • const OT_EDIT_MOVE_LEFT = 4
  • const OT_EDIT_MOVE_RIGHT = 5
  • const OT_EDIT_MOVE_UP = 6
  • const OT_EDIT_NEW_LINE = 2
  • const OT_EDIT_POSITION_COORDS = 5
  • const OT_EDIT_POSITION_CURSOR = 0
  • const OT_EDIT_POSITION_EOL = 3
  • const OT_EDIT_POSITION_LINE_START = 6
  • const OT_EDIT_POSITION_NEXT_WORD = 1
  • const OT_EDIT_POSITION_OFFSET = 4
  • const OT_EDIT_POSITION_PREV_WORD = 2
  • const OT_EMBEDDED_TERMINAL_CLEAR_SELECTION = 2
  • const OT_EMBEDDED_TERMINAL_INVALIDATE = 0
  • const OT_EMBEDDED_TERMINAL_SCROLL = 1
  • const OT_EMBEDDED_TERMINAL_SET_TRANSPARENT_BACKGROUND = 3
  • const OT_FLEX_DIRECTION_COLUMN = 0
  • const OT_FLEX_DIRECTION_COLUMN_REVERSE = 1
  • const OT_FLEX_DIRECTION_ROW = 2
  • const OT_FLEX_DIRECTION_ROW_REVERSE = 3
  • const OT_FLEX_WRAP_NONE = 0
  • const OT_FLEX_WRAP_REVERSE = 2
  • const OT_FLEX_WRAP_WRAP = 1
  • const OT_FRAME_BUSY = -27
  • const OT_FRAME_REQUEST_LIMIT = -28
  • const OT_GUTTER_ALL = 2
  • const OT_GUTTER_COLUMN = 0
  • const OT_GUTTER_ROW = 1
  • const OT_IMAGE_ALPHA_OPAQUE = 1
  • const OT_IMAGE_ALPHA_STRAIGHT = 0
  • const OT_IMAGE_ASSUMED_SRGB = 0
  • const OT_IMAGE_BGRA8 = 1
  • const OT_IMAGE_BLEND_DESTINATION_OVER = 2
  • const OT_IMAGE_BLEND_SOURCE = 1
  • const OT_IMAGE_BLEND_SOURCE_OVER = 0
  • const OT_IMAGE_BUSY = -47
  • const OT_IMAGE_COVER = 1
  • const OT_IMAGE_DIMENSION_LIMIT = -43
  • const OT_IMAGE_DRAW_SOURCE_HEIGHT = 2
  • const OT_IMAGE_DRAW_SOURCE_WIDTH = 1
  • const OT_IMAGE_EXPLICIT_SRGB = 1
  • const OT_IMAGE_FILL = 2
  • const OT_IMAGE_FILTER_AREA = 1
  • const OT_IMAGE_FILTER_CATMULL_ROM = 4
  • const OT_IMAGE_FILTER_CUBIC_BSPLINE = 3
  • const OT_IMAGE_FILTER_DEFAULT = 0
  • const OT_IMAGE_FILTER_MITCHELL = 5
  • const OT_IMAGE_FILTER_NEAREST = 6
  • const OT_IMAGE_FILTER_TRIANGLE = 2
  • const OT_IMAGE_FIT = 0
  • const OT_IMAGE_FLIP = 3
  • const OT_IMAGE_FLOP = 4
  • const OT_IMAGE_FORMAT_GIF = 5
  • const OT_IMAGE_FORMAT_JPEG = 3
  • const OT_IMAGE_FORMAT_PNG = 1
  • const OT_IMAGE_FORMAT_RGBA = 2
  • const OT_IMAGE_FORMAT_UNKNOWN = 0
  • const OT_IMAGE_FORMAT_WEBP = 4
  • const OT_IMAGE_MALFORMED_DATA = -42
  • const OT_IMAGE_MEMORY_LIMIT = -44
  • const OT_IMAGE_OUTPUT_TOO_SMALL = -45
  • const OT_IMAGE_PROTOCOL_AUTO = 0
  • const OT_IMAGE_PROTOCOL_BLOCKS = 3
  • const OT_IMAGE_PROTOCOL_KITTY = 1
  • const OT_IMAGE_PROTOCOL_SIXEL = 2
  • const OT_IMAGE_RGBA8 = 0
  • const OT_IMAGE_ROTATE_180 = 1
  • const OT_IMAGE_ROTATE_270 = 2
  • const OT_IMAGE_ROTATE_90 = 0
  • const OT_IMAGE_UNSUPPORTED_COLOR_SPACE = -41
  • const OT_IMAGE_UNSUPPORTED_FEATURE = -46
  • const OT_IMAGE_UNSUPPORTED_FORMAT = -40
  • const OT_INTERNAL_ERROR = -5
  • const OT_INVALID_ARGUMENT = -1
  • const OT_INVALID_PHASE = -19
  • const OT_JUSTIFY_CENTER = 1
  • const OT_JUSTIFY_FLEX_END = 2
  • const OT_JUSTIFY_FLEX_START = 0
  • const OT_JUSTIFY_SPACE_AROUND = 4
  • const OT_JUSTIFY_SPACE_BETWEEN = 3
  • const OT_JUSTIFY_SPACE_EVENLY = 5
  • const OT_LAYOUT_LIMIT = -26
  • const OT_LAYOUT_PAINT = 2
  • const OT_LAYOUT_PUBLIC = 0
  • const OT_LAYOUT_YOGA = 1
  • const OT_LEASE_BYTES_LIMIT = -22
  • const OT_LEASE_LIMIT = -21
  • const OT_MEASURE_AT_MOST = 2
  • const OT_MEASURE_EXACTLY = 1
  • const OT_MEASURE_UNDEFINED = 0
  • const OT_MOUSE_POINTER_ALIAS = 12
  • const OT_MOUSE_POINTER_ALL_SCROLL = 19
  • const OT_MOUSE_POINTER_AUTO = 0
  • const OT_MOUSE_POINTER_CELL = 8
  • const OT_MOUSE_POINTER_COL_RESIZE = 20
  • const OT_MOUSE_POINTER_CONTEXT_MENU = 3
  • const OT_MOUSE_POINTER_COPY = 13
  • const OT_MOUSE_POINTER_CROSSHAIR = 9
  • const OT_MOUSE_POINTER_DEFAULT = 1
  • const OT_MOUSE_POINTER_EW_RESIZE = 30
  • const OT_MOUSE_POINTER_E_RESIZE = 23
  • const OT_MOUSE_POINTER_GRAB = 17
  • const OT_MOUSE_POINTER_GRABBING = 18
  • const OT_MOUSE_POINTER_HELP = 4
  • const OT_MOUSE_POINTER_MAX = 35
  • const OT_MOUSE_POINTER_MOVE = 14
  • const OT_MOUSE_POINTER_NESW_RESIZE = 32
  • const OT_MOUSE_POINTER_NE_RESIZE = 26
  • const OT_MOUSE_POINTER_NONE = 2
  • const OT_MOUSE_POINTER_NOT_ALLOWED = 16
  • const OT_MOUSE_POINTER_NO_DROP = 15
  • const OT_MOUSE_POINTER_NS_RESIZE = 31
  • const OT_MOUSE_POINTER_NWSE_RESIZE = 33
  • const OT_MOUSE_POINTER_NW_RESIZE = 27
  • const OT_MOUSE_POINTER_N_RESIZE = 22
  • const OT_MOUSE_POINTER_POINTER = 5
  • const OT_MOUSE_POINTER_PROGRESS = 6
  • const OT_MOUSE_POINTER_ROW_RESIZE = 21
  • const OT_MOUSE_POINTER_SE_RESIZE = 28
  • const OT_MOUSE_POINTER_SW_RESIZE = 29
  • const OT_MOUSE_POINTER_S_RESIZE = 24
  • const OT_MOUSE_POINTER_TEXT = 10
  • const OT_MOUSE_POINTER_UNCHANGED = 4294967295
  • const OT_MOUSE_POINTER_VERTICAL_TEXT = 11
  • const OT_MOUSE_POINTER_WAIT = 7
  • const OT_MOUSE_POINTER_W_RESIZE = 25
  • const OT_MOUSE_POINTER_ZOOM_IN = 34
  • const OT_MOUSE_POINTER_ZOOM_OUT = 35
  • const OT_OBJECT_LIMIT = -16
  • const OT_OK = 0
  • const OT_OUTPUT_BACKPRESSURE = -11
  • const OT_OUTPUT_BUSY = -13
  • const OT_OUTPUT_FAILED = -15
  • const OT_OUT_OF_MEMORY = -3
  • const OT_OVERFLOW_HIDDEN = 1
  • const OT_OVERFLOW_SCROLL = 2
  • const OT_OVERFLOW_VISIBLE = 0
  • const OT_POSITION_ABSOLUTE = 2
  • const OT_POSITION_RELATIVE = 1
  • const OT_POSITION_STATIC = 0
  • const OT_PUMP_AGAIN = 1
  • const OT_PUMP_CLOSED = 4
  • const OT_PUMP_IDLE = 0
  • const OT_PUMP_OUTPUT_PENDING = 2
  • const OT_PUMP_WAIT_UNTIL = 3
  • const OT_RENDERER_ATTACHED = -17
  • const OT_RENDERER_NOT_ATTACHED = -18
  • const OT_RENDER_FAILED = 3
  • const OT_RENDER_PENDING = 1
  • const OT_RENDER_PRESENTED = 0
  • const OT_RENDER_SKIPPED = 2
  • const OT_SCENE_ALIGN_CENTER = 1
  • const OT_SCENE_ALIGN_LEFT = 0
  • const OT_SCENE_ALIGN_RIGHT = 2
  • const OT_SCENE_ARROW = 4
  • const OT_SCENE_BOX = 1
  • const OT_SCENE_CUSTOM = 6
  • const OT_SCENE_EDITOR = 5
  • const OT_SCENE_FRAME_DONE = 0
  • const OT_SCENE_FRAME_LAYOUT_CHANGED = 3
  • const OT_SCENE_FRAME_RECORD = 4
  • const OT_SCENE_FRAME_RESIZE = 2
  • const OT_SCENE_FRAME_UPDATE = 1
  • const OT_SCENE_FRAME_YIELD = 5
  • const OT_SCENE_GEOMETRY_PAINT = 1
  • const OT_SCENE_GEOMETRY_PUBLIC = 2
  • const OT_SCENE_HOOK_IDLE_UPDATE = 64
  • const OT_SCENE_HOOK_LAYOUT_CHANGED = 4
  • const OT_SCENE_HOOK_RENDER_AFTER = 16
  • const OT_SCENE_HOOK_RENDER_BEFORE = 8
  • const OT_SCENE_HOOK_RENDER_SELF = 32
  • const OT_SCENE_HOOK_RESIZE = 2
  • const OT_SCENE_HOOK_UPDATE = 1
  • const OT_SCENE_IMAGE = 8
  • const OT_SCENE_MUTATIONS_MAX = 4096
  • const OT_SCENE_PROPERTY_BACKGROUND = 64
  • const OT_SCENE_PROPERTY_BORDER = 16
  • const OT_SCENE_PROPERTY_BORDER_COLOR = 128
  • const OT_SCENE_PROPERTY_BORDER_STYLE = 256
  • const OT_SCENE_PROPERTY_BYTES_MAX = 360448
  • const OT_SCENE_PROPERTY_FOCUSABLE = 512
  • const OT_SCENE_PROPERTY_FOCUSED_BORDER_COLOR = 1024
  • const OT_SCENE_PROPERTY_OPACITY = 2
  • const OT_SCENE_PROPERTY_RECORD_MAX = 88
  • const OT_SCENE_PROPERTY_RESET_BORDER_CHARACTERS = 4096
  • const OT_SCENE_PROPERTY_SHOULD_FILL = 32
  • const OT_SCENE_PROPERTY_STYLE = 2048
  • const OT_SCENE_PROPERTY_TRANSLATE_X = 4
  • const OT_SCENE_PROPERTY_TRANSLATE_Y = 8
  • const OT_SCENE_PROPERTY_Z_INDEX = 1
  • const OT_SCENE_RECORD_BYTES_MAX = 67108864
  • const OT_SCENE_RECORD_COLOR_MATRIX = 7
  • const OT_SCENE_RECORD_DRAW = 1
  • const OT_SCENE_RECORD_EDITOR_VIEW = 9
  • const OT_SCENE_RECORD_GRAYSCALE = 6
  • const OT_SCENE_RECORD_GRAYSCALE_BACKGROUND = 2
  • const OT_SCENE_RECORD_GRAYSCALE_FOREGROUND = 1
  • const OT_SCENE_RECORD_GRAYSCALE_SUPERSAMPLED = 4
  • const OT_SCENE_RECORD_GRID = 3
  • const OT_SCENE_RECORD_IMAGE = 11
  • const OT_SCENE_RECORD_PACKED = 4
  • const OT_SCENE_RECORD_PHASE_AFTER = 2
  • const OT_SCENE_RECORD_PHASE_BEFORE = 0
  • const OT_SCENE_RECORD_PHASE_SELF = 1
  • const OT_SCENE_RECORD_SCENE_TEXT = 10
  • const OT_SCENE_RECORD_SLOT = 0
  • const OT_SCENE_RECORD_STACK = 2
  • const OT_SCENE_RECORD_SUPERSAMPLE = 5
  • const OT_SCENE_RECORD_TEXT_VIEW = 8
  • const OT_SCENE_RECORD_UNICODE = 12
  • const OT_SCENE_ROOT = 0
  • const OT_SCENE_SLIDER = 3
  • const OT_SCENE_TEXT = 2
  • const OT_SCENE_TEXT_BACKGROUND = 2
  • const OT_SCENE_TEXT_FOREGROUND = 1
  • const OT_SCENE_TEXT_LINK = 4
  • const OT_SCENE_TEXT_SELECTION_BACKGROUND = 1
  • const OT_SCENE_TEXT_SELECTION_CELL = 0
  • const OT_SCENE_TEXT_SELECTION_FOREGROUND = 2
  • const OT_SCENE_TEXT_SELECTION_LINE = 2
  • const OT_SCENE_TEXT_SELECTION_RESET = 0
  • const OT_SCENE_TEXT_SELECTION_SET = 1
  • const OT_SCENE_TEXT_SELECTION_UPDATE = 2
  • const OT_SCENE_TEXT_SELECTION_WORD = 1
  • const OT_SCENE_TEXT_VIEW = 7
  • const OT_SCENE_WRAP_CHAR = 1
  • const OT_SCENE_WRAP_NONE = 0
  • const OT_SCENE_WRAP_WORD = 2
  • const OT_SELECTION_CELL = 0
  • const OT_SELECTION_LINE = 2
  • const OT_SELECTION_OCCUPANCY_BOUNDARY = 1
  • const OT_SELECTION_OCCUPANCY_CELL = 0
  • const OT_SELECTION_WORD = 1
  • const OT_SELECT_DOCUMENT_RESET = 2
  • const OT_SELECT_DOCUMENT_SET = 0
  • const OT_SELECT_DOCUMENT_UPDATE = 1
  • const OT_SELECT_VIEWPORT_RESET = 5
  • const OT_SELECT_VIEWPORT_SET = 3
  • const OT_SELECT_VIEWPORT_UPDATE = 4
  • const OT_SESSION_BUFFER_CURRENT = 0
  • const OT_SESSION_BUFFER_NEXT = 1
  • const OT_SESSION_CANCELLED_STATE = 4
  • const OT_SESSION_CLOSED = -12
  • const OT_SESSION_CLOSED_STATE = 2
  • const OT_SESSION_CLOSING = 1
  • const OT_SESSION_CONTROL_PACKET_BYTES = 4096
  • const OT_SESSION_ENV_BYTES_MAX = 65536
  • const OT_SESSION_ENV_ENTRIES_MAX = 256
  • const OT_SESSION_FAILED = 3
  • const OT_SESSION_OPEN = 0
  • const OT_SESSION_REMOTE_AUTO = 0
  • const OT_SESSION_REMOTE_LOCAL = 1
  • const OT_SESSION_REMOTE_REMOTE = 2
  • const OT_STALE_FRAME = -25
  • const OT_STALE_HANDLE = -9
  • const OT_STALE_LEASE = -23
  • const OT_STALE_OUTPUT = -14
  • const OT_STYLE_BORDER = 3
  • const OT_STYLE_BORDER_WIDTH = 0
  • const OT_STYLE_DIMENSION = 4
  • const OT_STYLE_DISABLE_FLEX_SHRINK = 1
  • const OT_STYLE_ENUM = 0
  • const OT_STYLE_ENUM_ALIGN_CONTENT = 3
  • const OT_STYLE_ENUM_ALIGN_CONTENT_MAX = 8
  • const OT_STYLE_ENUM_ALIGN_ITEMS = 4
  • const OT_STYLE_ENUM_ALIGN_ITEMS_MAX = 8
  • const OT_STYLE_ENUM_ALIGN_SELF = 5
  • const OT_STYLE_ENUM_ALIGN_SELF_MAX = 8
  • const OT_STYLE_ENUM_BOX_SIZING = 10
  • const OT_STYLE_ENUM_BOX_SIZING_MAX = 1
  • const OT_STYLE_ENUM_DIRECTION = 0
  • const OT_STYLE_ENUM_DIRECTION_MAX = 2
  • const OT_STYLE_ENUM_DISPLAY = 9
  • const OT_STYLE_ENUM_DISPLAY_MAX = 1
  • const OT_STYLE_ENUM_FLEX_DIRECTION = 1
  • const OT_STYLE_ENUM_FLEX_DIRECTION_MAX = 3
  • const OT_STYLE_ENUM_FLEX_WRAP = 7
  • const OT_STYLE_ENUM_FLEX_WRAP_MAX = 2
  • const OT_STYLE_ENUM_JUSTIFY_CONTENT = 2
  • const OT_STYLE_ENUM_JUSTIFY_CONTENT_MAX = 5
  • const OT_STYLE_ENUM_OVERFLOW = 8
  • const OT_STYLE_ENUM_OVERFLOW_MAX = 2
  • const OT_STYLE_ENUM_POSITION_TYPE = 6
  • const OT_STYLE_ENUM_POSITION_TYPE_MAX = 2
  • const OT_STYLE_FLAGS_NONE = 0
  • const OT_STYLE_FLOAT = 1
  • const OT_STYLE_FLOAT_ASPECT_RATIO = 3
  • const OT_STYLE_FLOAT_FLEX = 0
  • const OT_STYLE_FLOAT_FLEX_GROW = 1
  • const OT_STYLE_FLOAT_FLEX_SHRINK = 2
  • const OT_STYLE_VALUE = 2
  • const OT_STYLE_VALUE_FLEX_BASIS = 6
  • const OT_STYLE_VALUE_GAP = 10
  • const OT_STYLE_VALUE_HEIGHT = 1
  • const OT_STYLE_VALUE_MARGIN = 7
  • const OT_STYLE_VALUE_MAX_HEIGHT = 5
  • const OT_STYLE_VALUE_MAX_WIDTH = 4
  • const OT_STYLE_VALUE_MIN_HEIGHT = 3
  • const OT_STYLE_VALUE_MIN_WIDTH = 2
  • const OT_STYLE_VALUE_PADDING = 8
  • const OT_STYLE_VALUE_POSITION = 9
  • const OT_STYLE_VALUE_WIDTH = 0
  • const OT_TERMINAL_ACTIVE = 2
  • const OT_TERMINAL_ALTERNATE_SCREEN = 1
  • const OT_TERMINAL_CANCELLED = 9
  • const OT_TERMINAL_CLEAR_ON_CLOSE = 8
  • const OT_TERMINAL_CLOSING = 6
  • const OT_TERMINAL_FAILED = 8
  • const OT_TERMINAL_MOUSE = 2
  • const OT_TERMINAL_MOUSE_MOVEMENT = 4
  • const OT_TERMINAL_RESTORED = 7
  • const OT_TERMINAL_RESUMING = 5
  • const OT_TERMINAL_SETTING_UP = 1
  • const OT_TERMINAL_SUSPENDED = 4
  • const OT_TERMINAL_SUSPENDING = 3
  • const OT_TERMINAL_UNINITIALIZED = 0
  • const OT_TEXT_REPLACEMENT_BYTES_MAX = 4194304
  • const OT_TEXT_REPLACEMENT_CHUNKS_MAX = 4096
  • const OT_TEXT_REPLACEMENT_COUNT_MAX = 256
  • const OT_TEXT_REPLACEMENT_URL_BYTES_MAX = 1048576
  • const OT_TEXT_VIEW_FIRST_LINE_OFFSET = 2
  • const OT_TEXT_VIEW_TAB_INDICATOR = 3
  • const OT_TEXT_VIEW_TEXT_ALIGN = 5
  • const OT_TEXT_VIEW_TRUNCATE = 4
  • const OT_TEXT_VIEW_WRAP_MODE = 1
  • const OT_TEXT_VIEW_WRAP_WIDTH = 0
  • const OT_UNIT_AUTO = 3
  • const OT_UNIT_PERCENT = 2
  • const OT_UNIT_POINT = 1
  • const OT_UNIT_UNDEFINED = 0
  • const OT_UNSUPPORTED_RESOURCE = -24
  • const OT_UNSUPPORTED_VERSION = -2
  • const OT_WIDTH_METHOD_NO_ZWJ = 2
  • const OT_WIDTH_METHOD_UNICODE = 1
  • const OT_WIDTH_METHOD_UNICODE_WIDE = 3
  • const OT_WIDTH_METHOD_WCWIDTH = 0
  • const OT_WRONG_CONTEXT = -7
  • const OT_WRONG_KIND = -8
  • const OT_WRONG_SESSION = -10
  • const OT_WRONG_THREAD = -4
  • function ot_buffer_acquire_lease(ot_context *context, const ot_handle *buffer, ot_buffer_lease_snapshot *out_snapshot): ot_status
  • function ot_buffer_color_matrix(ot_context *, const ot_handle *, const ot_scene_frame_request *, const float *matrix, uint32_t matrix_count, const float *mask, uint32_t mask_count, const float *strength, uint32_t channel): ot_status
  • function ot_buffer_create(ot_context *context, const ot_buffer_options *options, ot_handle *out_buffer): ot_status
  • function ot_buffer_destroy(ot_context *context, const ot_handle *buffer): ot_status
  • function ot_buffer_draw(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, const ot_buffer_draw_header *options, const ot_handle *source, const uint8_t *text, uint32_t text_len, const uint8_t *bottom_title, uint32_t bottom_title_len): ot_status
  • function ot_buffer_draw_editor_view(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *view, int32_t x, int32_t y): ot_status
  • function ot_buffer_draw_grayscale(ot_context *, const ot_handle *, const ot_scene_frame_request *, const float *data, uint32_t sample_count, int32_t x, int32_t y, uint32_t width, uint32_t height, const uint16_t *foreground, const uint16_t *background, uint32_t supersampled): ot_status
  • function ot_buffer_draw_grid(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, const ot_buffer_grid_options *options, const int32_t *columns, uint32_t column_count, const int32_t *rows, uint32_t row_count): ot_status
  • function ot_buffer_draw_image(ot_context *, const ot_handle *target, const ot_scene_frame_request *frame, const ot_handle *image, const ot_image_draw_options *, uint32_t *out_drawn): ot_status
  • function ot_buffer_draw_packed(ot_context *, const ot_handle *, const ot_scene_frame_request *, const uint8_t *data, uint32_t byte_count, int32_t x, int32_t y, uint32_t width, uint32_t height): ot_status
  • function ot_buffer_draw_scene_text(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *node, int32_t x, int32_t y): ot_status
  • function ot_buffer_draw_supersample(ot_context *, const ot_handle *, const ot_scene_frame_request *, const uint8_t *data, uint32_t byte_count, int32_t x, int32_t y, uint32_t format, uint32_t stride): ot_status
  • function ot_buffer_draw_text_view(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *view, int32_t x, int32_t y): ot_status
  • function ot_buffer_draw_unicode(ot_context *, const ot_handle *target, const ot_scene_frame_request *frame, const ot_handle *unicode, uint32_t index, int32_t x, int32_t y, const uint16_t foreground[4], const uint16_t background[4], uint32_t attributes): ot_status
  • function ot_buffer_lease_get_real_char_size(ot_context *context, const ot_handle *lease, uint32_t add_line_breaks, uint32_t *out_size): ot_status
  • function ot_buffer_lease_release(ot_context *context, const ot_handle *lease): ot_status
  • function ot_buffer_lease_validate(ot_context *context, const ot_handle *lease): ot_status
  • function ot_buffer_lease_write_resolved_chars(ot_context *context, const ot_handle *lease, uint8_t *bytes, uint32_t capacity, uint32_t add_line_breaks, uint8_t *cell_lengths, uint32_t cell_capacity, uint32_t *out_written): ot_status
  • function ot_buffer_resize(ot_context *context, const ot_handle *buffer, uint32_t width, uint32_t height): ot_status
  • function ot_buffer_stack(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, uint32_t operation, int32_t x, int32_t y, uint32_t width, uint32_t height, const float *opacity, float *out_opacity): ot_status
  • function ot_clipboard_clear_operation_start(ot_context *context, uint8_t selection, uint32_t timeout_ms, ot_handle *out_operation): uint8_t
  • function ot_clipboard_operation_cancel(ot_context *context, const ot_handle *operation): uint8_t
  • function ot_clipboard_operation_destroy(ot_context *context, const ot_handle *operation): uint8_t
  • function ot_clipboard_operation_poll(ot_context *context, const ot_handle *operation): uint8_t
  • function ot_clipboard_operation_result_data_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_t
  • function ot_clipboard_operation_result_data_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_t
  • function ot_clipboard_operation_result_diagnostic_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_t
  • function ot_clipboard_operation_result_diagnostic_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_t
  • function ot_clipboard_operation_result_error_code(ot_context *context, const ot_handle *operation, uint32_t *out_error_code): uint8_t
  • function ot_clipboard_operation_result_mime_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_t
  • function ot_clipboard_operation_result_mime_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_t
  • function ot_clipboard_read_operation_start(ot_context *context, const uint8_t *request, uint32_t request_length, uint8_t selection, uint32_t max_bytes, uint32_t max_image_pixels, uint32_t max_conversion_bytes, uint32_t timeout_ms, ot_handle *out_operation): uint8_t
  • function ot_clipboard_service_begin_shutdown(ot_context *context): uint8_t
  • function ot_clipboard_service_create(ot_context *context, uint32_t max_operations, uint32_t max_provider_transfers, const uint8_t *wayland_seat, uint32_t wayland_seat_length): int32_t
  • function ot_clipboard_service_destroy(ot_context *context): uint8_t
  • function ot_clipboard_service_drain(ot_context *context): uint8_t
  • function ot_clipboard_service_poll_shutdown(ot_context *context): uint8_t
  • function ot_clipboard_write_operation_start(ot_context *context, const uint8_t *text, uint32_t text_length, uint8_t selection, uint32_t timeout_ms, ot_handle *out_operation): uint8_t
  • function ot_context_abi_version(void): uint32_t
  • function ot_context_create(const ot_context_options *options, ot_context **out_context): ot_status
  • function ot_context_destroy(ot_context *context): ot_status
  • function ot_context_drain_diagnostics(ot_context *context, ot_diagnostic *records, uint32_t capacity, ot_diagnostic_drain *out_drain): ot_status
  • function ot_context_get_last_error(ot_context *context, ot_context_error *out_error): ot_status
  • function ot_context_get_link_url(ot_context *context, uint32_t link_id, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_context_set_edit_event_callback(ot_context *, ot_edit_event_callback): ot_status
  • function ot_edit_buffer_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_status
  • function ot_edit_buffer_create(ot_context *, const ot_edit_buffer_options *, ot_handle *out_edit_buffer): ot_status
  • function ot_edit_buffer_delete_range(ot_context *, const ot_handle *edit_buffer, uint32_t start_row, uint32_t start_col, uint32_t end_row, uint32_t end_col): ot_status
  • function ot_edit_buffer_destroy(ot_context *, const ot_handle *edit_buffer): ot_status
  • function ot_edit_buffer_get_highlights(ot_context *, const ot_handle *, uint32_t line, ot_edit_highlight *highlights, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_edit_buffer_get_info(ot_context *, const ot_handle *edit_buffer, ot_edit_buffer_info *out_info): ot_status
  • function ot_edit_buffer_get_position(ot_context *, const ot_handle *, uint32_t query, uint32_t a, uint32_t b, ot_edit_position *out_position): ot_status
  • function ot_edit_buffer_get_range(ot_context *, const ot_handle *, uint32_t by_coords, uint32_t start_row, uint32_t start_col, uint32_t end_row, uint32_t end_col, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_edit_buffer_get_text(ot_context *, const ot_handle *edit_buffer, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_edit_buffer_highlight(ot_context *, const ot_handle *, uint32_t operation, uint32_t argument, const ot_edit_highlight *highlight): ot_status
  • function ot_edit_buffer_history(ot_context *, const ot_handle *, uint32_t redo, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_edit_buffer_insert_text(ot_context *, const ot_handle *edit_buffer, const uint8_t *bytes, uint32_t byte_count): ot_status
  • function ot_edit_buffer_set_cursor(ot_context *, const ot_handle *edit_buffer, uint32_t row, uint32_t col): ot_status
  • function ot_edit_buffer_set_defaults(ot_context *, const ot_handle *, uint32_t mask, const ot_editor_style *): ot_status
  • function ot_edit_buffer_set_syntax_style(ot_context *, const ot_handle *edit_buffer, const ot_handle *style): ot_status
  • function ot_edit_buffer_set_tab_width(ot_context *, const ot_handle *edit_buffer, uint32_t width): ot_status
  • function ot_edit_buffer_set_text(ot_context *, const ot_handle *edit_buffer, const uint8_t *bytes, uint32_t byte_count, uint32_t preserve_history): ot_status
  • function ot_editor_view_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_status
  • function ot_editor_view_create(ot_context *, const ot_handle *edit_buffer, uint32_t width, uint32_t height, ot_handle *out_view): ot_status
  • function ot_editor_view_destroy(ot_context *, const ot_handle *view): ot_status
  • function ot_editor_view_get_info(ot_context *, const ot_handle *, uint32_t follow_cursor, ot_editor_view_info *out_info): ot_status
  • function ot_editor_view_get_lines(ot_context *, const ot_handle *, uint32_t logical, ot_scene_text_line *lines, uint32_t capacity, ot_editor_measure *out_info): ot_status
  • function ot_editor_view_get_position(ot_context *, const ot_handle *, uint32_t query, ot_editor_position *out_position): ot_status
  • function ot_editor_view_get_selected_text(ot_context *, const ot_handle *, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_editor_view_get_selection(ot_context *, const ot_handle *, ot_editor_view_info *out_info): ot_status
  • function ot_editor_view_get_viewport(ot_context *, const ot_handle *, ot_editor_viewport *out_viewport): ot_status
  • function ot_editor_view_measure(ot_context *, const ot_handle *, uint32_t width, uint32_t height, ot_editor_measure *out_info): ot_status
  • function ot_editor_view_replace_selection(ot_context *, const ot_handle *, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_steps): ot_status
  • function ot_editor_view_select(ot_context *, const ot_handle *, const ot_editor_selection *, uint32_t *out_changed): ot_status
  • function ot_editor_view_set_placeholder(ot_context *, const ot_handle *, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *chunks, uint32_t chunk_count): ot_status
  • function ot_editor_view_set_scroll_margin(ot_context *, const ot_handle *, float margin): ot_status
  • function ot_editor_view_set_tab_color(ot_context *, const ot_handle *, const uint16_t color[4]): ot_status
  • function ot_editor_view_set_viewport(ot_context *, const ot_handle *, const ot_editor_viewport *, uint32_t size_only, uint32_t move_cursor): ot_status
  • function ot_embedded_terminal_command(ot_context *, const ot_handle *terminal, uint32_t command, int32_t argument): ot_status
  • function ot_embedded_terminal_compose(ot_context *, const ot_handle *terminal, const ot_handle *target, const ot_scene_frame_request *frame, int32_t x, int32_t y): ot_status
  • function ot_embedded_terminal_create(ot_context *, const ot_embedded_terminal_options *, ot_handle *out_terminal): ot_status
  • function ot_embedded_terminal_cursor_get(ot_context *, const ot_handle *terminal, ot_embedded_terminal_cursor *out_cursor): ot_status
  • function ot_embedded_terminal_destroy(ot_context *, const ot_handle *terminal): ot_status
  • function ot_embedded_terminal_drain_responses(ot_context *, const ot_handle *terminal, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_encode_focus(ot_context *, const ot_handle *terminal, uint32_t focused, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_encode_key(ot_context *, const ot_handle *terminal, const ot_embedded_terminal_key *, const uint8_t *key, uint32_t key_count, const uint8_t *text, uint32_t text_count, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_encode_mouse(ot_context *, const ot_handle *terminal, const ot_embedded_terminal_mouse *, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_encode_paste(ot_context *, const ot_handle *terminal, const uint8_t *input, uint32_t input_count, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_get_selected_text(ot_context *, const ot_handle *terminal, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_embedded_terminal_resize(ot_context *, const ot_handle *terminal, uint32_t cols, uint32_t rows): ot_status
  • function ot_embedded_terminal_set_selection(ot_context *, const ot_handle *terminal, uint32_t start_x, uint32_t start_y, uint32_t end_x, uint32_t end_y): ot_status
  • function ot_embedded_terminal_write(ot_context *, const ot_handle *terminal, const uint8_t *bytes, uint32_t byte_count): ot_status
  • function ot_image_clone(ot_context *destination, ot_context *source, const ot_handle *image, ot_handle *out_image): ot_status
  • function ot_image_composite(ot_context *, const ot_handle *base, const ot_handle *overlay, int32_t left, int32_t top, uint32_t blend, uint8_t opacity, ot_handle *out_image): ot_status
  • function ot_image_copy_pixels(ot_context *, const ot_handle *image, uint8_t *destination, uint64_t byte_count, uint32_t stride, uint32_t format): ot_status
  • function ot_image_copy_png(ot_context *, const ot_handle *image, uint8_t *destination, uint64_t capacity, uint64_t *out_byte_count): ot_status
  • function ot_image_create_pixels(ot_context *, const uint8_t *pixels, uint64_t byte_count, uint32_t width, uint32_t height, uint32_t stride, uint32_t format, uint32_t alpha, ot_handle *out_image): ot_status
  • function ot_image_decode(ot_context *, const uint8_t *bytes, uint64_t byte_count, ot_handle *out_image): ot_status
  • function ot_image_destroy(ot_context *, const ot_handle *image): ot_status
  • function ot_image_extend(ot_context *, const ot_handle *image, uint32_t top, uint32_t right, uint32_t bottom, uint32_t left, const uint8_t *background_rgba, ot_handle *out_image): ot_status
  • function ot_image_extract(ot_context *, const ot_handle *image, uint32_t left, uint32_t top, uint32_t width, uint32_t height, ot_handle *out_image): ot_status
  • function ot_image_get_info(ot_context *, const ot_handle *image, ot_image_info *out_info): ot_status
  • function ot_image_inspect(ot_context *, const uint8_t *bytes, uint64_t byte_count, ot_image_info *out_info): ot_status
  • function ot_image_pixels_release(ot_context *, const ot_handle *lease): ot_status
  • function ot_image_resize(ot_context *, const ot_handle *image, uint32_t width, uint32_t height, uint32_t filter, ot_handle *out_image): ot_status
  • function ot_image_retain(ot_context *, const ot_handle *image, ot_handle *out_image): ot_status
  • function ot_image_take_pixels(ot_context *, const ot_handle *image, ot_image_pixels *out_pixels): ot_status
  • function ot_image_transform(ot_context *, const ot_handle *image, uint32_t operation, ot_handle *out_image): ot_status
  • function ot_image_update_pixels(ot_context *, const ot_handle *image, const uint8_t *pixels, uint64_t byte_count, uint32_t stride, uint32_t format, uint32_t alpha): ot_status
  • function ot_scene_create_node(ot_context *, const ot_handle *session, uint32_t kind, uint32_t num, ot_handle *out_node): ot_status
  • function ot_scene_destroy_node(ot_context *, const ot_handle *node): ot_status
  • function ot_scene_flush(ot_context *, const uint8_t *updates, uint32_t byte_count, uint32_t *out_applied): ot_status
  • function ot_scene_frame_acquire_buffer_lease(ot_context *, const ot_handle *session, const ot_scene_frame_request *frame_request, uint32_t which, ot_buffer_lease_snapshot *out_snapshot): ot_status
  • function ot_scene_frame_cancel(ot_context *, const ot_handle *session, uint64_t frame_id): ot_status
  • function ot_scene_frame_commit(ot_context *, const ot_handle *session, const ot_scene_frame_request *frame_request, uint32_t force, uint32_t *out_status): ot_status
  • function ot_scene_frame_copy_buffer(ot_context *, const ot_handle *session, const ot_scene_frame_request *, const ot_handle *target): ot_status
  • function ot_scene_frame_draw_buffer(ot_context *context, const ot_handle *session, const ot_scene_frame_request *frame_request, const ot_handle *source, int32_t x, int32_t y): ot_status
  • function ot_scene_frame_get_paint_slots(ot_context *, const ot_handle *session, const ot_scene_frame_request *record_request, ot_scene_paint_slot *out_slots, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_scene_frame_step_with_geometry(ot_context *, const ot_handle *session, const ot_scene_frame_request *previous, const ot_scene_frame_options *, uint32_t max_work_items, const uint8_t *recording, uint32_t recording_length, ot_scene_frame_request *out_request, ot_scene_frame_geometry *out_geometry): ot_status
  • function ot_scene_get_cursor_state(ot_context *, const ot_handle *session, ot_scene_cursor_state *out_state): ot_status
  • function ot_scene_get_layout(ot_context *, const ot_handle *node, uint32_t observation, ot_scene_layout *out_layout): ot_status
  • function ot_scene_get_selected_text(ot_context *, const ot_handle *node, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_scene_get_slider_thumb(ot_context *, const ot_handle *node, ot_scene_slider_thumb *out_thumb): ot_status
  • function ot_scene_get_stats(ot_context *, const ot_handle *session, ot_scene_stats *out_stats): ot_status
  • function ot_scene_get_style(ot_context *, const ot_handle *node, uint32_t group, uint32_t kind, uint32_t edge, ot_scene_style_value *out_value): ot_status
  • function ot_scene_get_text(ot_context *, const ot_handle *node, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_scene_get_text_info(ot_context *, const ot_handle *node, ot_scene_text_info *out_info): ot_status
  • function ot_scene_get_text_lines(ot_context *, const ot_handle *node, uint32_t first_line, ot_scene_text_line *lines, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_scene_get_text_selection(ot_context *, const ot_handle *node, uint64_t *out_packed): ot_status
  • function ot_scene_has_measure(ot_context *, const ot_handle *node, uint32_t *out_enabled): ot_status
  • function ot_scene_hit_test(ot_context *, const ot_handle *session, int32_t x, int32_t y, uint32_t *out_num): ot_status
  • function ot_scene_mark_dirty(ot_context *, const ot_handle *node): ot_status
  • function ot_scene_measure_layout(ot_context *, const ot_handle *session, const ot_handle *root): ot_status
  • function ot_scene_move_node(ot_context *, const ot_handle *node, const ot_handle *parent, uint32_t index): ot_status
  • function ot_scene_paint(ot_context *, const ot_handle *session, const uint16_t background[4], uint32_t use_mouse, uint32_t excluded_hit_num, ot_scene_frame_request *out_frame): ot_status
  • function ot_scene_set_arrow(ot_context *, const ot_handle *node, const ot_scene_arrow_options *, const uint8_t *text, uint32_t byte_count): ot_status
  • function ot_scene_set_box_details(ot_context *, const ot_handle *node, const ot_scene_box_details *, const uint8_t *title, uint32_t title_bytes, const uint8_t *bottom_title, uint32_t bottom_title_bytes): ot_status
  • function ot_scene_set_editor_options(ot_context *, const ot_handle *node, const ot_scene_editor_options *): ot_status
  • function ot_scene_set_editor_view(ot_context *, const ot_handle *node, const ot_handle *view): ot_status
  • function ot_scene_set_focus(ot_context *, const ot_handle *node, uint32_t focused): ot_status
  • function ot_scene_set_hooks(ot_context *, const ot_handle *node, const ot_scene_hooks *): ot_status
  • function ot_scene_set_image(ot_context *, const ot_handle *node, const ot_handle *image, uint32_t fit, uint32_t protocol, const ot_handle *buffer): ot_status
  • function ot_scene_set_measure(ot_context *, const ot_handle *node, ot_scene_measure_callback): ot_status
  • function ot_scene_set_paint(ot_context *, const ot_handle *node, const ot_scene_paint_options *): ot_status
  • function ot_scene_set_slider(ot_context *, const ot_handle *node, const ot_scene_slider_options *): ot_status
  • function ot_scene_set_style(ot_context *, const ot_handle *node, uint32_t group, uint32_t kind, uint32_t edge, uint32_t unit, float value, uint32_t flags): ot_status
  • function ot_scene_set_styled_text(ot_context *, const ot_handle *node, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *chunks, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count): ot_status
  • function ot_scene_set_surface(ot_context *, const ot_handle *node, const ot_handle *buffer): ot_status
  • function ot_scene_set_text(ot_context *, const ot_handle *node, const uint8_t *bytes, uint32_t byte_count): ot_status
  • function ot_scene_set_text_options(ot_context *, const ot_handle *node, const ot_scene_text_options *): ot_status
  • function ot_scene_set_text_selection(ot_context *, const ot_handle *node, const ot_scene_text_selection_options *, uint32_t *out_changed): ot_status
  • function ot_scene_set_text_view(ot_context *, const ot_handle *node, const ot_handle *view): ot_status
  • function ot_scene_set_text_view_paint(ot_context *, const ot_handle *node, uint32_t enabled): ot_status
  • function ot_scene_set_viewport(ot_context *, const ot_handle *node, const ot_handle *viewport): ot_status
  • function ot_session_acquire_buffer_lease(ot_context *context, const ot_handle *session, uint32_t which, ot_buffer_lease_snapshot *out_snapshot): ot_status
  • function ot_session_attach_renderer(ot_context *context, const ot_handle *session, const ot_session_renderer_options *options): ot_status
  • function ot_session_attach_renderer_with_env(ot_context *context, const ot_handle *session, const ot_session_renderer_env_options *options, const uint8_t *environment): ot_status
  • function ot_session_cancel(ot_context *context, const ot_handle *session): ot_status
  • function ot_session_cancel_kitty_image_transport(ot_context *, const ot_handle *session, uint32_t failed): ot_status
  • function ot_session_clipboard(ot_context *context, const ot_handle *session, uint32_t target, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_written): ot_status
  • function ot_session_close(ot_context *context, const ot_handle *session): ot_status
  • function ot_session_complete_output(ot_context *context, const ot_handle *session, const ot_output_ticket *ticket, uint32_t success): ot_status
  • function ot_session_control(ot_context *context, const ot_handle *session, const ot_session_control_options *options, const uint8_t *bytes, uint32_t byte_count): ot_status
  • function ot_session_create(ot_context *context, const ot_session_options *options, ot_handle *out_session): ot_status
  • function ot_session_destroy(ot_context *context, const ot_handle *session): ot_status
  • function ot_session_drain_output(ot_context *context, const ot_handle *session, uint32_t max_bytes, uint32_t *out_written, void *user_data, ot_output_write_callback writer): ot_status
  • function ot_session_drain_stdout(ot_context *context, const ot_handle *session, uint32_t max_bytes, uint32_t *out_written): ot_status
  • function ot_session_draw_buffer(ot_context *context, const ot_handle *session, const ot_handle *source, int32_t x, int32_t y): ot_status
  • function ot_session_dump_hit_grid(ot_context *, const ot_handle *session): ot_status
  • function ot_session_get_capabilities(ot_context *context, const ot_handle *session, ot_session_capabilities *out_capabilities): ot_status
  • function ot_session_get_kitty_image_transport(ot_context *, const ot_handle *session, ot_session_kitty_image_transport *out_status): ot_status
  • function ot_session_get_link_id(ot_context *context, const ot_handle *session, int32_t x, int32_t y, uint32_t *out_link_id): ot_status
  • function ot_session_get_renderer_state(ot_context *context, const ot_handle *session, ot_session_renderer_state *out_state): ot_status
  • function ot_session_get_state(ot_context *context, const ot_handle *session, uint32_t *out_state): ot_status
  • function ot_session_get_terminal_state(ot_context *context, const ot_handle *session, uint32_t *out_phase): ot_status
  • function ot_session_get_write_limit(ot_context *context, const ot_handle *session, uint64_t *out_bytes): ot_status
  • function ot_session_notification(ot_context *, const ot_handle *, const uint8_t *message, uint32_t message_len, const uint8_t *title, uint32_t title_len, uint32_t *out_written): ot_status
  • function ot_session_poll_kitty_image_transport(ot_context *, const ot_handle *session, uint64_t now_ns, uint32_t *out_retry): ot_status
  • function ot_session_process_kitty_image_reply(ot_context *, const ot_handle *session, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_result): ot_status
  • function ot_session_pump(ot_context *context, const ot_handle *session, uint64_t now_ns, uint32_t work_budget, ot_session_pump_result *out_result): ot_status
  • function ot_session_pump_exit(ot_context *context, const ot_handle *session, uint32_t *out_status): ot_status
  • function ot_session_read_output(ot_context *context, const ot_handle *session, uint8_t *bytes, uint32_t capacity, ot_output_ticket *out_ticket): ot_status
  • function ot_session_render(ot_context *context, const ot_handle *session, uint32_t force, uint32_t *out_result): ot_status
  • function ot_session_render_split(ot_context *, const ot_handle *session, const ot_scene_frame_request *, const ot_split_snapshot *, uint32_t count, uint32_t pinned_render_offset, uint32_t force, uint32_t *out_status): ot_status
  • function ot_session_resize_renderer(ot_context *context, const ot_handle *session, uint32_t width, uint32_t height): ot_status
  • function ot_session_resume(ot_context *context, const ot_handle *session): ot_status
  • function ot_session_set_debug_overlay(ot_context *, const ot_handle *session, uint32_t enabled, uint32_t corner): ot_status
  • function ot_session_set_image_resolution(ot_context *, const ot_handle *session, uint32_t terminal_width, uint32_t terminal_height, uint32_t pixel_width, uint32_t pixel_height): ot_status
  • function ot_session_set_kitty_image_transport(ot_context *, const ot_handle *session, uint32_t mode): ot_status
  • function ot_session_set_palette_state(ot_context *, const ot_handle *, const uint16_t *palette, uint32_t color_count, const uint16_t *foreground, const uint16_t *background, uint32_t epoch): ot_status
  • function ot_session_set_screen(ot_context *, const ot_handle *session, uint32_t alternate, uint32_t width, uint32_t height, const uint8_t *trailing_output, uint32_t byte_count): ot_status
  • function ot_session_setup_terminal(ot_context *context, const ot_handle *session, const ot_session_terminal_options *options): ot_status
  • function ot_session_split_control(ot_context *, const ot_handle *session, const ot_split_control *, uint32_t *out_offset): ot_status
  • function ot_session_start_kitty_file_probe(ot_context *, const ot_handle *session): ot_status
  • function ot_session_suspend(ot_context *context, const ot_handle *session): ot_status
  • function ot_session_sync_detached(ot_context *, const ot_handle *session, const ot_handle *parent): ot_status
  • function ot_session_update_memory_stats(ot_context *, const ot_handle *session, uint32_t heap_used, uint32_t heap_total, uint32_t array_buffers): ot_status
  • function ot_session_update_stats(ot_context *, const ot_handle *session, double overall_ms, uint32_t fps, double callback_ms): ot_status
  • function ot_session_write(ot_context *context, const ot_handle *session, const uint8_t *bytes, uint32_t byte_count): ot_status
  • function ot_syntax_style_create(ot_context *, ot_handle *out_style): ot_status
  • function ot_syntax_style_destroy(ot_context *, const ot_handle *style): ot_status
  • function ot_syntax_style_get_count(ot_context *, const ot_handle *, uint32_t *out_count): ot_status
  • function ot_syntax_style_register(ot_context *, const ot_handle *, const uint8_t *name, uint32_t byte_count, const ot_editor_style *, uint32_t *out_id): ot_status
  • function ot_syntax_style_resolve(ot_context *, const ot_handle *, const uint8_t *name, uint32_t byte_count, uint32_t *out_id): ot_status
  • function ot_terminal_flush_input(void): ot_status
  • function ot_text_buffer_append(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count): ot_status
  • function ot_text_buffer_clear(ot_context *, const ot_handle *, uint32_t reset): ot_status
  • function ot_text_buffer_create(ot_context *, const ot_edit_buffer_options *, ot_handle *out_buffer): ot_status
  • function ot_text_buffer_destroy(ot_context *, const ot_handle *): ot_status
  • function ot_text_buffer_get_highlights(ot_context *, const ot_handle *, uint32_t line, ot_edit_highlight *, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_text_buffer_get_info(ot_context *, const ot_handle *, ot_text_buffer_info *): ot_status
  • function ot_text_buffer_get_range(ot_context *, const ot_handle *, uint32_t start, uint32_t end, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_text_buffer_get_text(ot_context *, const ot_handle *, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_text_buffer_highlight(ot_context *, const ot_handle *, uint32_t operation, uint32_t argument, const ot_edit_highlight *): ot_status
  • function ot_text_buffer_replace_styled_batch(ot_context *, const ot_text_buffer_replacement *, uint32_t count, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count, ot_text_buffer_replacement_info *out): ot_status
  • function ot_text_buffer_set_defaults(ot_context *, const ot_handle *, uint32_t mask, const ot_editor_style *): ot_status
  • function ot_text_buffer_set_styled_text(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count, const ot_styled_text_chunk *, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count): ot_status
  • function ot_text_buffer_set_syntax_style(ot_context *, const ot_handle *, const ot_handle *style): ot_status
  • function ot_text_buffer_set_tab_width(ot_context *, const ot_handle *, uint32_t width): ot_status
  • function ot_text_buffer_set_text(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count): ot_status
  • function ot_text_buffer_view_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_status
  • function ot_text_buffer_view_create(ot_context *, const ot_handle *buffer, ot_handle *out_view): ot_status
  • function ot_text_buffer_view_destroy(ot_context *, const ot_handle *): ot_status
  • function ot_text_buffer_view_get_info(ot_context *, const ot_handle *, ot_editor_view_info *): ot_status
  • function ot_text_buffer_view_get_lines(ot_context *, const ot_handle *, uint32_t logical, uint32_t first_line, ot_scene_text_line *, uint32_t capacity, ot_editor_measure *): ot_status
  • function ot_text_buffer_view_get_selected_text(ot_context *, const ot_handle *, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_status
  • function ot_text_buffer_view_measure(ot_context *, const ot_handle *, uint32_t width, uint32_t height, ot_editor_measure *): ot_status
  • function ot_text_buffer_view_select(ot_context *, const ot_handle *, const ot_editor_selection *, uint32_t *out_changed): ot_status
  • function ot_text_buffer_view_set_tab_color(ot_context *, const ot_handle *, const uint16_t color[4]): ot_status
  • function ot_text_buffer_view_set_viewport(ot_context *, const ot_handle *, const ot_editor_viewport *, uint32_t size_only): ot_status
  • function ot_unicode_create(ot_context *, const uint8_t *bytes, uint32_t byte_count, uint32_t width_method, ot_handle *out_unicode): ot_status
  • function ot_unicode_destroy(ot_context *, const ot_handle *unicode): ot_status
  • function ot_unicode_get(ot_context *, const ot_handle *unicode, ot_unicode_char *characters, uint32_t capacity, uint32_t *out_count): ot_status
  • struct ot_buffer_draw_alpha
  • struct ot_buffer_draw_box
  • struct ot_buffer_draw_cell
  • struct ot_buffer_draw_clear
  • struct ot_buffer_draw_compose
  • struct ot_buffer_draw_fill
  • struct ot_buffer_draw_header
  • struct ot_buffer_draw_text_record
  • struct ot_buffer_grid_options
  • struct ot_buffer_lease_snapshot
  • struct ot_buffer_options
  • struct ot_context_error
  • struct ot_context_options
  • struct ot_diagnostic
  • struct ot_diagnostic_drain
  • struct ot_edit_buffer_info
  • struct ot_edit_buffer_options
  • struct ot_edit_highlight
  • struct ot_edit_position
  • struct ot_editor_measure
  • struct ot_editor_position
  • struct ot_editor_selection
  • struct ot_editor_style
  • struct ot_editor_view_info
  • struct ot_editor_viewport
  • struct ot_embedded_terminal_cursor
  • struct ot_embedded_terminal_key
  • struct ot_embedded_terminal_mouse
  • struct ot_embedded_terminal_options
  • struct ot_handle
  • struct ot_image_draw_options
  • struct ot_image_info
  • struct ot_image_pixels
  • struct ot_output_ticket
  • struct ot_scene_arrow_options
  • struct ot_scene_box_details
  • struct ot_scene_cursor_state
  • struct ot_scene_editor_options
  • struct ot_scene_frame_geometry
  • struct ot_scene_frame_options
  • struct ot_scene_frame_request
  • struct ot_scene_hooks
  • struct ot_scene_layout
  • struct ot_scene_paint_options
  • struct ot_scene_paint_slot
  • struct ot_scene_property_update
  • struct ot_scene_record_color_matrix
  • struct ot_scene_record_draw
  • struct ot_scene_record_grayscale
  • struct ot_scene_record_grid
  • struct ot_scene_record_header
  • struct ot_scene_record_image
  • struct ot_scene_record_packed
  • struct ot_scene_record_slot
  • struct ot_scene_record_stack
  • struct ot_scene_record_supersample
  • struct ot_scene_record_unicode
  • struct ot_scene_record_view
  • struct ot_scene_slider_options
  • struct ot_scene_slider_thumb
  • struct ot_scene_stats
  • struct ot_scene_style_property
  • struct ot_scene_style_value
  • struct ot_scene_text_info
  • struct ot_scene_text_line
  • struct ot_scene_text_options
  • struct ot_scene_text_selection_options
  • struct ot_session_capabilities
  • struct ot_session_control_options
  • struct ot_session_cursor_update
  • struct ot_session_kitty_image_transport
  • struct ot_session_options
  • struct ot_session_pump_result
  • struct ot_session_renderer_env_options
  • struct ot_session_renderer_options
  • struct ot_session_renderer_state
  • struct ot_session_terminal_options
  • struct ot_split_control
  • struct ot_split_snapshot
  • struct ot_styled_text_chunk
  • struct ot_text_buffer_info
  • struct ot_text_buffer_replacement
  • struct ot_text_buffer_replacement_info
  • struct ot_unicode_char
  • type ot_context = struct ot_context
  • type ot_edit_event_callback = void (*)(uint64_t context_id, uint32_t slot, uint32_t generation, uint32_t event)
  • type ot_output_write_callback = int64_t (*)(void *user_data, const uint8_t *bytes, uint32_t byte_count)
  • type ot_scene_measure_callback = void (*)(uint64_t context_id, uint32_t slot, uint32_t generation, float width, uint32_t width_mode, float height, uint32_t height_mode, float *out_size)
  • type ot_status = int32_t