feat(pineal): cierra stub heatmap — matrix + viridis + encoder + paint
Fase F: segundo stub de pineal cerrado.
- matrix — HeatmapMatrix densa width×height de f32, con revision para
invalidación de textura; get/set/min_max/replace_data.
- palette — Ramp::{Viridis, Grayscale}; Viridis por interpolación
lineal de 5 control points perceptualmente uniformes.
- encoder — encode_argb: normaliza por min/max + rampa + pack 0xAARRGGBB
para subir como textura (camino de matrices grandes).
- paint — painter agnóstico: un fill_rect por celda contra un Canvas
(camino de matrices chicas + export SVG).
12 tests verdes. cargo check --workspace verde.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,23 @@
|
||||
//! `pineal-heatmap` — matriz `[width × height]` de `f32` → imagen.
|
||||
//! `pineal-heatmap` — matriz `width × height` de `f32` → visualización.
|
||||
//!
|
||||
//! Para matrices grandes (4096² = 67 MB de pixels), encodear la
|
||||
//! imagen una vez al cambiar la data y renderear con un solo
|
||||
//! `drawImageRect` (o equivalente GPUI). Eso convierte el coste
|
||||
//! de cada frame en "blit de una textura", sub-millisecond.
|
||||
//! Dos caminos de render:
|
||||
//! - [`paint`] — agnóstico, un `fill_rect` por celda contra un `Canvas`.
|
||||
//! Apto para matrices chicas y export SVG.
|
||||
//! - [`encoder::encode_argb`] — empaqueta la matriz como buffer ARGB para
|
||||
//! que un backend lo suba como textura y la rendee con un solo blit.
|
||||
//! Apto para matrices grandes (4096² sin sudar).
|
||||
//!
|
||||
//! - **`matrix`** — `HeatmapMatrix { data: Vec<f32>, width, height,
|
||||
//! revision }`.
|
||||
//! - **`palette`** — color ramps (viridis, plasma, gray…).
|
||||
//! - **`encoder`** — convierte la matrix a un buffer ARGB para
|
||||
//! subir como textura.
|
||||
//! - **`element`** — `Element` GPUI.
|
||||
//! - [`matrix`] — `HeatmapMatrix` con `revision` para invalidación.
|
||||
//! - [`palette`] — color ramps (Viridis, Grayscale).
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
pub mod matrix {}
|
||||
pub mod palette {}
|
||||
pub mod encoder {}
|
||||
pub mod element {}
|
||||
pub mod matrix;
|
||||
pub mod palette;
|
||||
pub mod encoder;
|
||||
pub mod paint;
|
||||
|
||||
pub use encoder::encode_argb;
|
||||
pub use matrix::HeatmapMatrix;
|
||||
pub use paint::paint;
|
||||
pub use palette::Ramp;
|
||||
|
||||
Reference in New Issue
Block a user