Skip to main content

pineal_render/
lib.rs

1//! `pineal-render` — abstracción de painter.
2//!
3//! Los crates de visualización (cartesian, mesh, polar…) no conocen
4//! el runtime de UI: hablan contra el trait [`Canvas`] definido acá.
5//! Eso deja a la cadena `core → render → painter` agnóstica.
6//!
7//! Backends activos:
8//!
9//! - **Llimphi/vello** ([`llimphi_backend::SceneCanvas`]) — canónico
10//!   para apps tawasuyu; pinta dentro de un `paint_with` del `View<Msg>`
11//!   declarativo.
12//! - **PlanRecorder** ([`recorder::PlanRecorder`]) — graba cada llamada
13//!   como `RenderCmd`. Consumido por `pineal-export` para emitir SVG,
14//!   PNG (raster propio con AA 2×2) y PDF (writer propio).
15//! - **GPU directo wgpu** ([`gpu_canvas::GpuSceneCanvas`]) — backend
16//!   denso para >100 K primitivas. Delega cada llamada del Canvas a
17//!   `llimphi_raster::GpuBatch` y se enchufa desde `View::gpu_paint_with`
18//!   en lugar de `paint_with`. Los painters no cambian. Sin texto y sin
19//!   AA fino — ver doc del módulo para trade-offs.
20//!
21//! Tipos primitivos (`Color`, `Point`, `Rect`) viven acá para no
22//! atarlos al tipo de color/punto de ningún runtime.
23
24#![forbid(unsafe_code)]
25
26pub mod color;
27pub mod geom;
28pub mod canvas;
29pub mod plan;
30pub mod recorder;
31
32pub mod llimphi_backend;
33pub mod gpu_canvas;
34
35pub use color::Color;
36pub use geom::{Point, Rect};
37pub use canvas::{Canvas, StrokeStyle};
38pub use plan::{RenderCmd, RenderPlan};
39pub use recorder::PlanRecorder;
40
41pub use llimphi_backend::SceneCanvas;
42pub use gpu_canvas::GpuSceneCanvas;