//! Vuelca los patrones compartidos rasterizados **por CPU** (el camino de wawa)
//! a archivos RGBA8 crudos, para compararlos contra el camino GPU.
//!
//! No es un demo: es la mitad de un test que no puede vivir en un solo binario.
//! Los dos backends de `llimphi-text` (`cpu` y `vello`) son excluyentes, así que
//! nadie puede linkear los dos y comparar en proceso. Esta mitad escribe; la
//! otra —`llimphi-test/tests/cpu_vs_gpu.rs`— lee y compara.
//!
//! ```bash
//! cargo run --manifest-path 02_ruway/llimphi/llimphi-wawa/Cargo.toml \
//! --no-default-features --features std --example volcar_patron --
//! ```
//!
//! Lo cómodo es `./scripts/check-llimphi-cpu-vs-gpu.sh`, que corre las dos.
use llimphi_cpu::lienzo::FormatoPixel;
use llimphi_wawa::Cascara;
include!("../../escena_patron.rs");
fn main() {
let dir = std::env::args().nth(1).unwrap_or_else(|| {
eprintln!("uso: volcar_patron ");
std::process::exit(2);
});
let dir = std::path::PathBuf::from(dir);
std::fs::create_dir_all(&dir).expect("crear el directorio de salida");
let mut cascara = Cascara::new(ANCHO as u16, ALTO as u16);
for (nombre, vista) in patrones::<()>() {
cascara.fotograma(vista);
let mut px = vec![0u8; (ANCHO * ALTO * 4) as usize];
cascara.volcar(&mut px, (ANCHO * 4) as usize, FormatoPixel::Rgba8);
let ruta = dir.join(format!("{nombre}.rgba"));
std::fs::write(&ruta, &px).expect("escribir el volcado");
println!("{nombre}: {} bytes → {}", px.len(), ruta.display());
}
println!("patrones volcados: {}", patrones::<()>().len());
}