[package] name = "llimphi-compositor" version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true publish.workspace = true repository.workspace = true description = "llimphi-compositor — el núcleo declarativo de Llimphi sin winit: el árbol `View`, 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)." [dependencies] llimphi-layout = { path = "../llimphi-layout", version = "0.1.0" } llimphi-text = { path = "../llimphi-text", version = "0.1.0" } vello = { workspace = true } # Sólo para los tipos de la firma de GpuPaintFn (Device/Queue/Encoder/View). # wgpu NO depende de winit — el compositor sigue libre de windowing. wgpu = { workspace = true } [dev-dependencies] # Volcado headless del paint a PNG (llvmpipe) para VER sombra/gradiente/borde # sin levantar ventana. Sólo capas inferiores — no llimphi-ui (sin ciclo). llimphi-hal = { path = "../llimphi-hal", version = "0.1.0" } llimphi-raster = { path = "../llimphi-raster", version = "0.1.0" } llimphi-theme = { path = "../llimphi-theme", version = "0.1.0" } png = { workspace = true } pollster = { workspace = true } # Widgets REALES para el showreel: el `View` que devuelven es el mismo # tipo (`llimphi_compositor::View`, re-exportado por llimphi-ui), así que # montan con el mount/paint/measure de este mismo crate. Dev-only → sin ciclo # en el grafo normal (llimphi-ui depende de este crate, no al revés). llimphi-widget-switch = { path = "../widgets/switch", version = "0.1.0" } llimphi-widget-slider = { path = "../widgets/slider", version = "0.1.0" } llimphi-widget-progress = { path = "../widgets/progress", version = "0.1.0" } llimphi-widget-button = { path = "../widgets/button", version = "0.1.0" } llimphi-widget-segmented = { path = "../widgets/segmented", version = "0.1.0" }