tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
chore: refresco desde el monorepo (pin tawasuyu.git v0.3.0)
1[package]
2name = "llimphi-widget-tablado"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8description = "llimphi-widget-tablado — el lugar del árbol del anfitrión donde se representa la escena de una app enjaulada: la recorta, la coloca y cuenta lo que pintó."
9
10[dependencies]
11# Sólo para el ejemplo `tablado_demo` y el test del lazo. **Opcionales**, y no es
12# cosmético: `llimphi-ui` enciende `llimphi-text/vello`, así que tomarlas siempre
13# rompía el test del recorte —que se compila con el backend `cpu`— con un choque
14# de backends excluyentes. Lo cazó `scripts/check-llimphi-cpu-vs-gpu.sh`, que
15# existe justo para eso.
16llimphi-ui = { workspace = true, optional = true }
17llimphi-cable = { path = "../../llimphi-cable", version = "0.1.0", optional = true }
18# El COMPOSITOR, no el shell de escritorio: así este widget sirve igual en Linux,
19# en el kernel de wawa y adentro de una jaula (W4.6).
20llimphi-compositor = { workspace = true, default-features = false }
21# Quien convierte la escena del huésped en órdenes de dibujo. Uno solo para los
22# dos anfitriones — ver `SDD-JAULA-LINUX.md`.
23llimphi-reproductor = { path = "../../llimphi-reproductor", version = "0.1.0", default-features = false }
24llimphi-text = { path = "../../llimphi-text", version = "0.1.0", default-features = false }
25llimphi-wire-escena = { path = "../../llimphi-wire-escena", version = "0.1.0", default-features = false }
26kurbo = { version = "0.13", default-features = false }
27peniko = { version = "0.6", default-features = false }
28
29[features]
30# Un widget NO elige backend: lo elige quien ensambla la app. Este default existe
31# sólo para que el crate se pueda compilar SOLO (`cargo check -p …`), porque el
32# compositor no compila sin ninguno. Toda app lo apaga y trae el suyo.
33default = ["vello", "std"]
34std = ["llimphi-compositor/std", "llimphi-reproductor/std", "llimphi-text/std", "llimphi-wire-escena/std", "kurbo/std", "peniko/std"]
35libm = ["llimphi-compositor/libm", "llimphi-reproductor/libm", "llimphi-text/libm", "llimphi-wire-escena/libm", "kurbo/libm", "peniko/libm"]
36vello = ["llimphi-compositor/vello", "llimphi-reproductor/vello"]
37# El lazo cerrado: el ejemplo con ventana y el test que corre el huésped de
38# verdad. Aparte del backend porque arrastra el shell de escritorio, que un
39# widget no debe tener — ver el comentario de las dependencias.
40demo = ["dep:llimphi-ui", "dep:llimphi-cable", "vello"]
41cpu = ["llimphi-compositor/cpu", "llimphi-reproductor/cpu"]
42
43[dev-dependencies]
44# El test de la costura arma una escena de huésped a mano —órdenes con su matriz
45# absoluta, como las compondría una app enjaulada— y para eso necesita el
46# vocabulario de geometría directo, no el que este crate usa por dentro.
47kurbo = { version = "0.13" }
48peniko = { version = "0.6" }
49# El rasterizador por CPU, sólo para el test del RECORTE — que es la única parte
50# del tablado que se tiene que certificar en el píxel y no en un contador (regla
51# 8: esto cambia QUÉ se presenta). Se usa nada más con la feature `cpu`; con el
52# default (`vello`) ese test queda apagado y esta dependencia sin tocar.
53#
54# cargo test -p llimphi-widget-tablado --no-default-features --features cpu,std
55llimphi-cpu = { path = "../../llimphi-cpu", version = "0.1.0" }
56llimphi-reproductor = { path = "../../llimphi-reproductor", version = "0.1.0", default-features = false }
57
58# El ejemplo y el test del lazo piden el shell: van detrás de `demo`.
59[[example]]
60name = "tablado_demo"
61path = "examples/tablado_demo.rs"
62required-features = ["demo"]
63
64[[test]]
65name = "el_lazo_cerrado"
66path = "tests/el_lazo_cerrado.rs"
67required-features = ["demo"]
68
69# El mismo lazo pero con la app REAL adentro: el explorador entero corriendo en
70# otro proceso. Pide lo mismo, por lo mismo.
71[[test]]
72name = "el_explorador_enjaulado"
73path = "tests/el_explorador_enjaulado.rs"
74required-features = ["demo"]