tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
1[package]
2name = "llimphi-compositor"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8repository.workspace = true
9description = "llimphi-compositor — el núcleo declarativo de Llimphi sin winit: el árbol `View<Msg>`, el mount sobre taffy, el paint a `vello::Scene` y el hit-test. No depende de llimphi-hal ni de una surface concreta, así que la misma composición sirve sobre winit (llimphi-ui) o, a futuro, sobre el framebuffer del kernel wawa. `wgpu` entra sólo por la firma de `GpuPaintFn` (tipos, no windowing)."
10
11[dependencies]
12llimphi-layout = { path = "../llimphi-layout", version = "0.1.0" }
13llimphi-text = { path = "../llimphi-text", version = "0.1.0" }
14vello = { workspace = true }
15# Sólo para los tipos de la firma de GpuPaintFn (Device/Queue/Encoder/View).
16# wgpu NO depende de winit — el compositor sigue libre de windowing.
17wgpu = { workspace = true }
18
19[dev-dependencies]
20# Volcado headless del paint a PNG (llvmpipe) para VER sombra/gradiente/borde
21# sin levantar ventana. Sólo capas inferiores — no llimphi-ui (sin ciclo).
22llimphi-hal = { path = "../llimphi-hal", version = "0.1.0" }
23llimphi-raster = { path = "../llimphi-raster", version = "0.1.0" }
24llimphi-theme = { path = "../llimphi-theme", version = "0.1.0" }
25png = { workspace = true }
26pollster = { workspace = true }
27# Widgets REALES para el showreel: el `View<Msg>` que devuelven es el mismo
28# tipo (`llimphi_compositor::View`, re-exportado por llimphi-ui), así que
29# montan con el mount/paint/measure de este mismo crate. Dev-only → sin ciclo
30# en el grafo normal (llimphi-ui depende de este crate, no al revés).
31llimphi-widget-switch = { path = "../widgets/switch", version = "0.1.0" }
32llimphi-widget-slider = { path = "../widgets/slider", version = "0.1.0" }
33llimphi-widget-progress = { path = "../widgets/progress", version = "0.1.0" }
34llimphi-widget-button = { path = "../widgets/button", version = "0.1.0" }
35llimphi-widget-segmented = { path = "../widgets/segmented", version = "0.1.0" }