# ExecuteYuiPersistentCanvasFlatViewportFrameV1

A pragmatic retained path for product display lists that already use one logical viewport. Full/resize/structural frames rebuild the copy-backed surface once. Pointer, meter, playhead, and other local changes restore that surface, clear only explicit damage, and replay only intersecting commands. No browser, offscreen DOM, or per-frame display-list clone participates.

Last updated: 2026-09-09

Package: frontend.yui | Status: source-declared

Tags: cpu, frontend, frontend.yui, function, source-example, yeho, yui

Turn YUI models into a working frontend and its rendering/input adapters.

```yh
external ExecuteYuiPersistentCanvasFlatViewportFrameV1(yuiDisplayList original displayList, yuiCompositionPlan original composition, yuiCanvasViewport original viewport, yuiPersistentCanvasFrameV1 original frame) returns yuiPersistentCanvasExecutionV1
```


## Use ExecuteYuiPersistentCanvasFlatViewportFrameV1

A complete small caller. Values are illustrative; check the returned result and package requirements before connecting live resources.

Verification: type checked

```yh
using frontend.yui

// Turn YUI models into a working frontend and its rendering/input adapters.
yuiDisplayList displayList = yuiDisplayList("surface Id")
yuiCompositionPlan composition = yuiCompositionPlan("surface Id")
yuiCanvasViewport viewport = yuiCanvasViewport(1, 1, 1, 1, 1, 1, 1)
yuiPersistentCanvasFrameV1 frame = yuiPersistentCanvasFrameV1(true, 1, 1, 1, "example")
yuiPersistentCanvasExecutionV1 result = ExecuteYuiPersistentCanvasFlatViewportFrameV1(displayList, composition, viewport, frame)
Console.Log("Inspect result in your debugger")

```

Save this beside start.yh as project.mech:

```toml
manifestVersion = "2"
package = "api.example.frontend_yui__executeyuipersistentcanvasflatviewportframev1"
version = "0.1.0"
languageEdition = "yeho-core-2026.1"

[app]
kind = "headless"

[[dependencies]]
package = "frontend.yui"
version = "0.2.0"
path = "../../../yeho/packages/frontend/yui"

[[dependencies]]
package = "graphics.canvas"
version = "0.1.0"
path = "../../../yeho/packages/graphics/canvas"

[[dependencies]]
package = "graphics.image"
version = "0.1.0"
path = "../../../yeho/packages/graphics/image"

[[dependencies]]
package = "graphics.image.processing"
version = "0.1.0"
path = "../../../yeho/packages/graphics/image/processing"

[[dependencies]]
package = "graphics.text"
version = "0.1.0"
path = "../../../yeho/packages/graphics/text"

[[dependencies]]
package = "host.ui_services"
version = "0.1.0"
path = "../../../yeho/packages/host/ui_services"

[[dependencies]]
package = "input.text"
version = "0.1.0"
path = "../../../yeho/packages/input/text"

[[dependencies]]
package = "ui"
version = "0.2.0"
path = "../../../yeho/packages/ui"

```

Extract the example archive beside the yeho and dolphin checkouts. This example requires those source dependencies and a current developer compiler.

```sh
./yeho/build/dolphin-metal/yehoc ./api-examples/frontend.yui--ExecuteYuiPersistentCanvasFlatViewportFrameV1/usage --backend cpu-oracle -o /tmp/yeho-example
/tmp/yeho-example
```


Package presence and a declaration do not establish support on every host. Host services need their platform and lifecycle setup.

Source: yeho/packages/frontend/yui/render-persistent_canvas.yh

AI training permission: https://demonhunterlabs.com/ai-use
