Rezi
    Preparing search index...

    Interface DrawlistBuilderV2

    ZRDL v2 drawlist builder interface.

    Extends v1 with SET_CURSOR command for native cursor control. When v2 is negotiated, the engine handles cursor display internally, eliminating the need for "fake cursor" glyphs.

    interface DrawlistBuilderV2 {
        addBlob(bytes: Uint8Array): number | null;
        addTextRunBlob(
            segments: readonly Readonly<
                {
                    style?: Readonly<
                        {
                            bg?: Readonly<{ b: number; g: number; r: number }>;
                            bold?: boolean;
                            dim?: boolean;
                            fg?: Readonly<{ b: number; g: number; r: number }>;
                            inverse?: boolean;
                            italic?: boolean;
                            underline?: boolean;
                        },
                    >;
                    text: string;
                },
            >[],
        ): number
        | null;
        build(): DrawlistBuildResult;
        clear(): void;
        clearTo(
            cols: number,
            rows: number,
            style?: Readonly<
                {
                    bg?: Readonly<{ b: number; g: number; r: number }>;
                    bold?: boolean;
                    dim?: boolean;
                    fg?: Readonly<{ b: number; g: number; r: number }>;
                    inverse?: boolean;
                    italic?: boolean;
                    underline?: boolean;
                },
            >,
        ): void;
        drawText(
            x: number,
            y: number,
            text: string,
            style?: Readonly<
                {
                    bg?: Readonly<{ b: number; g: number; r: number }>;
                    bold?: boolean;
                    dim?: boolean;
                    fg?: Readonly<{ b: number; g: number; r: number }>;
                    inverse?: boolean;
                    italic?: boolean;
                    underline?: boolean;
                },
            >,
        ): void;
        drawTextRun(x: number, y: number, blobIndex: number): void;
        fillRect(
            x: number,
            y: number,
            w: number,
            h: number,
            style?: Readonly<
                {
                    bg?: Readonly<{ b: number; g: number; r: number }>;
                    bold?: boolean;
                    dim?: boolean;
                    fg?: Readonly<{ b: number; g: number; r: number }>;
                    inverse?: boolean;
                    italic?: boolean;
                    underline?: boolean;
                },
            >,
        ): void;
        hideCursor(): void;
        popClip(): void;
        pushClip(x: number, y: number, w: number, h: number): void;
        reset(): void;
        setCursor(state: CursorState): void;
    }

    Hierarchy (View Summary)

    Index

    Methods

    • Append a blob payload to the blob table and return its index.

      Notes:

      • The blob span length MUST be 4-byte aligned.
      • Blob content is not deduplicated; callers may cache returned indices.

      Parameters

      • bytes: Uint8Array

      Returns number | null

    • Convenience helper that encodes a ZRDL v1 DRAW_TEXT_RUN blob payload from segments and appends it via addBlob().

      Parameters

      • segments: readonly Readonly<
            {
                style?: Readonly<
                    {
                        bg?: Readonly<{ b: number; g: number; r: number }>;
                        bold?: boolean;
                        dim?: boolean;
                        fg?: Readonly<{ b: number; g: number; r: number }>;
                        inverse?: boolean;
                        italic?: boolean;
                        underline?: boolean;
                    },
                >;
                text: string;
            },
        >[]

      Returns number | null

    • Clear framebuffer and fill the viewport with a style.

      Why: ZRDL v1 CLEAR carries no style payload. This helper provides a deterministic "clear with background" that works in both raw and widget render modes by emitting CLEAR + FILL_RECT.

      Parameters

      • cols: number
      • rows: number
      • Optionalstyle: Readonly<
            {
                bg?: Readonly<{ b: number; g: number; r: number }>;
                bold?: boolean;
                dim?: boolean;
                fg?: Readonly<{ b: number; g: number; r: number }>;
                inverse?: boolean;
                italic?: boolean;
                underline?: boolean;
            },
        >

      Returns void

    • Draw text at (x,y). Strings are interned and deduplicated. Emits OP_DRAW_TEXT (opcode 3).

      Parameters

      • x: number
      • y: number
      • text: string
      • Optionalstyle: Readonly<
            {
                bg?: Readonly<{ b: number; g: number; r: number }>;
                bold?: boolean;
                dim?: boolean;
                fg?: Readonly<{ b: number; g: number; r: number }>;
                inverse?: boolean;
                italic?: boolean;
                underline?: boolean;
            },
        >

      Returns void

    • Fill rectangle at (x,y) with size (w,h). Emits OP_FILL_RECT (opcode 2).

      Parameters

      • x: number
      • y: number
      • w: number
      • h: number
      • Optionalstyle: Readonly<
            {
                bg?: Readonly<{ b: number; g: number; r: number }>;
                bold?: boolean;
                dim?: boolean;
                fg?: Readonly<{ b: number; g: number; r: number }>;
                inverse?: boolean;
                italic?: boolean;
                underline?: boolean;
            },
        >

      Returns void

    • Hide the cursor by emitting SET_CURSOR with visible=false. Convenience method equivalent to setCursor({ ..., visible: false }).

      Returns void

    • Set cursor position and appearance. Emits OP_SET_CURSOR (opcode 7).

      Notes:

      • x/y = -1 means "leave unchanged" (engine decides)
      • visible = false hides the cursor regardless of position
      • shape is ignored if the terminal doesn't support cursor shaping

      Parameters

      Returns void