Stage 4: Content.
Builds the semantic RenderModel.Window models for each editor window
(buffer windows and agent chat windows) and resolves each active window's
buffer cursor. Produces WindowContent carriers that the Compose stage
flattens into the frame's window list.
Summary
Functions
Builds the semantic window models for agent chat windows.
Builds the semantic window models for each buffer window.
Resets the per-frame rasterized-row counter at the start of the Content stage (#2287).
Returns the number of buffer rows rasterized so far this frame (#2287).
Types
@type state() :: MingaEditor.RenderPipeline.Input.t()
Render pipeline input.
Functions
@spec build_agent_chat_content(state(), MingaEditor.Layout.t()) :: {[MingaEditor.RenderPipeline.WindowContent.t()], Minga.RenderModel.Cursor.t() | nil, state()}
Builds the semantic window models for agent chat windows.
Finds windows with {:agent_chat, _} content in the layout, renders
the agent chat content into their rects, and returns WindowContent
carriers. Buffer windows are skipped (handled by build_content/2).
Returns an empty list if no agent chat windows exist.
@spec build_agent_chat_content(state(), MingaEditor.Layout.t(), %{ required(MingaEditor.Window.id()) => MingaEditor.RenderPipeline.AgentChatPrefetch.t() }) :: {[MingaEditor.RenderPipeline.WindowContent.t()], Minga.RenderModel.Cursor.t() | nil, state()}
@spec build_content(state(), %{ required(MingaEditor.Window.id()) => MingaEditor.RenderPipeline.Scroll.WindowScroll.t() }) :: {[MingaEditor.RenderPipeline.WindowContent.t()], Minga.RenderModel.Cursor.t() | nil, state()}
Builds the semantic window models for each buffer window.
Produces WindowContent carriers (the window's RenderModel.Window
models) and the absolute cursor position for the active window.
Resets the per-frame rasterized-row counter at the start of the Content stage (#2287).
@spec rows_rasterized(state()) :: non_neg_integer()
Returns the number of buffer rows rasterized so far this frame (#2287).