refresh: stack al día (vello 0.7 / wgpu 27 / parley 0.6) + motor 3D voxel
Re-sincroniza las fuentes desde el monorepo (estaba en vello 0.5/wgpu 24 y con la estructura vieja de eventloop) y suma el 3D: - bump del workspace a vello 0.7 / wgpu 27 / parley 0.6, + accesskit 0.24 / accesskit_winit 0.33 / vello_hybrid 0.0.9. - nuevos crates: llimphi-3d (voxels ray-march + mallas en un depth compartido, montable dentro de un View 2D vía set_viewport+scissor) y llimphi-voxel (world-gen, personajes, director de escenas) + shared/foreign-vox (puente .vox). - README: sección "Not just 2D — a 3D voxel engine" + GIF (docs/llimphi_voxel.gif). - excluido modules/allichay (arrastra deps fuera del alcance del front-door). - cargo check --workspace: verde. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
authors.workspace = true
|
||||
publish.workspace = true
|
||||
description = "llimphi-icons — set mínimo de iconos vectoriales (BezPath en grid 24×24) renderizables vía paint_with. Stroke-based, escalables. Cubre las acciones canónicas de cualquier UI gioser."
|
||||
description = "llimphi-icons — set mínimo de iconos vectoriales (BezPath en grid 24×24) renderizables vía paint_with. Stroke-based, escalables. Cubre las acciones canónicas de cualquier UI tawasuyu."
|
||||
|
||||
[dependencies]
|
||||
llimphi-ui = { workspace = true }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//! Galería de los iconos de marca de todas las apps de gioser.
|
||||
//! Galería de los iconos de marca de todas las apps de tawasuyu.
|
||||
//!
|
||||
//! Pinta los 29 [`AppIcon`] en una grilla, cada uno en su color de marca
|
||||
//! con su nombre debajo. Sirve para eyeballear de un vistazo que el set
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//! `app_icons` — iconos de marca, uno por dominio/app de gioser.
|
||||
//! `app_icons` — iconos de marca, uno por dominio/app de tawasuyu.
|
||||
//!
|
||||
//! A diferencia del set canónico de [`crate::Icon`] (glifos genéricos de
|
||||
//! acción: file, save, search…), acá vive **un glifo distintivo por app**.
|
||||
@@ -31,7 +31,7 @@ use llimphi_ui::llimphi_raster::kurbo::{Affine, BezPath, Cap, Join, Stroke};
|
||||
use llimphi_ui::llimphi_raster::peniko::Color;
|
||||
use llimphi_ui::View;
|
||||
|
||||
/// Una app de gioser con icono de marca. El identificador (`name`) coincide
|
||||
/// Una app de tawasuyu con icono de marca. El identificador (`name`) coincide
|
||||
/// con el `id` del `AppEntry` en `app-bus`.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum AppIcon {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//! `llimphi-icons` — set canónico de iconos vectoriales para apps gioser.
|
||||
//! `llimphi-icons` — set canónico de iconos vectoriales para apps tawasuyu.
|
||||
//!
|
||||
//! Cada icono es una función pura que devuelve un `BezPath` definido en
|
||||
//! un grid lógico de **24×24 unidades**. El renderer escala al rect que
|
||||
@@ -16,7 +16,7 @@
|
||||
//! no "marca registrada". Cada uno debe ser reconocible al primer
|
||||
//! vistazo aún en 12×12.
|
||||
//! - **Set acotado**: suficientes para cubrir el grueso de acciones y
|
||||
//! tipos que aparecen en cualquier UI gioser. Si una app necesita uno
|
||||
//! tipos que aparecen en cualquier UI tawasuyu. Si una app necesita uno
|
||||
//! más, lo agrega aquí (no en su propio crate) — la consistencia
|
||||
//! visual importa más que el aislamiento.
|
||||
//!
|
||||
@@ -115,6 +115,15 @@ pub enum Icon {
|
||||
FileText,
|
||||
Link,
|
||||
Font,
|
||||
// --- Vistas / layout (toolbars de file manager) ---
|
||||
/// Grilla 2×2 (vista iconos / galería).
|
||||
Grid,
|
||||
/// Tres filas horizontales (vista lista).
|
||||
Rows,
|
||||
/// Tabla: marco + fila de encabezado + columnas (vista detalle).
|
||||
Table,
|
||||
/// Dos paneles verticales lado a lado (modo dual).
|
||||
Columns,
|
||||
}
|
||||
|
||||
impl Icon {
|
||||
@@ -169,6 +178,10 @@ impl Icon {
|
||||
Icon::FileText => "file_text",
|
||||
Icon::Link => "link",
|
||||
Icon::Font => "font",
|
||||
Icon::Grid => "grid",
|
||||
Icon::Rows => "rows",
|
||||
Icon::Table => "table",
|
||||
Icon::Columns => "columns",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,6 +236,10 @@ impl Icon {
|
||||
Icon::FileText => path_file_text(),
|
||||
Icon::Link => path_link(),
|
||||
Icon::Font => path_font(),
|
||||
Icon::Grid => path_grid(),
|
||||
Icon::Rows => path_rows(),
|
||||
Icon::Table => path_table(),
|
||||
Icon::Columns => path_columns(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -952,6 +969,62 @@ fn path_font() -> BezPath {
|
||||
p
|
||||
}
|
||||
|
||||
fn path_grid() -> BezPath {
|
||||
let mut p = BezPath::new();
|
||||
// Cuatro celdas 2x2.
|
||||
for (x, y) in [(4.0, 4.0), (13.0, 4.0), (4.0, 13.0), (13.0, 13.0)] {
|
||||
p.move_to((x, y));
|
||||
p.line_to((x + 7.0, y));
|
||||
p.line_to((x + 7.0, y + 7.0));
|
||||
p.line_to((x, y + 7.0));
|
||||
p.close_path();
|
||||
}
|
||||
p
|
||||
}
|
||||
|
||||
fn path_rows() -> BezPath {
|
||||
let mut p = BezPath::new();
|
||||
// Tres filas (vista lista).
|
||||
for y in [6.0, 12.0, 18.0] {
|
||||
p.move_to((4.0, y));
|
||||
p.line_to((20.0, y));
|
||||
}
|
||||
p
|
||||
}
|
||||
|
||||
fn path_table() -> BezPath {
|
||||
let mut p = BezPath::new();
|
||||
// Marco.
|
||||
p.move_to((4.0, 5.0));
|
||||
p.line_to((20.0, 5.0));
|
||||
p.line_to((20.0, 19.0));
|
||||
p.line_to((4.0, 19.0));
|
||||
p.close_path();
|
||||
// Fila de encabezado.
|
||||
p.move_to((4.0, 9.5));
|
||||
p.line_to((20.0, 9.5));
|
||||
// Separador de columnas (debajo del encabezado).
|
||||
p.move_to((11.0, 9.5));
|
||||
p.line_to((11.0, 19.0));
|
||||
p
|
||||
}
|
||||
|
||||
fn path_columns() -> BezPath {
|
||||
let mut p = BezPath::new();
|
||||
// Dos paneles verticales lado a lado (modo dual).
|
||||
p.move_to((4.0, 4.0));
|
||||
p.line_to((11.0, 4.0));
|
||||
p.line_to((11.0, 20.0));
|
||||
p.line_to((4.0, 20.0));
|
||||
p.close_path();
|
||||
p.move_to((13.0, 4.0));
|
||||
p.line_to((20.0, 4.0));
|
||||
p.line_to((20.0, 20.0));
|
||||
p.line_to((13.0, 20.0));
|
||||
p.close_path();
|
||||
p
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
Reference in New Issue
Block a user