1c6aafbc24
mirada-layout (el motor de teselado del compositor) pasa a `no_std +
alloc` para poder compilarse también en bare-metal — es el primer
crate-núcleo que brahman y renaser compartirán.
- `#![cfg_attr(not(test), no_std)]` + `extern crate alloc`: usa
`alloc::{vec, collections::BTreeMap}` en vez de `std`.
- Matemática de punto flotante vía `libm` (`sqrt`/`ceil`/`round` viven
en `std`, no en `core`).
- `serde` pasa a feature opcional: los consumidores Linux
(mirada-protocol/brain) la activan; un consumidor bare-metal no
necesita (de)serializar el layout.
- Deps declaradas directas (no `workspace = true`): un núcleo que
cruzará fronteras de workspace se mantiene autocontenido.
Verificado: `cargo build --target x86_64-unknown-none` compila;
32 tests verdes; mirada-protocol/brain sin regresión.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
30 lines
1.1 KiB
Rust
30 lines
1.1 KiB
Rust
//! `mirada-layout` — el motor de teselado del compositor Wayland.
|
|
//!
|
|
//! mirada es un compositor Wayland; este crate es su cerebro espacial,
|
|
//! aislado de Wayland y de `smithay`. Decide *dónde* va cada ventana —
|
|
//! un cálculo puro sobre rectángulos— para que el compositor sólo tenga
|
|
//! que aplicar la geometría a las superficies reales.
|
|
//!
|
|
//! - [`geometry`] — el [`Rect`] y el reparto exacto de píxeles.
|
|
//! - [`layout`] — los modos de teselado y la función [`tile`].
|
|
//! - [`workspace`] — el [`Workspace`]: ventanas, foco y modo.
|
|
//!
|
|
//! Todo es determinista y testeable sin un servidor gráfico: la misma
|
|
//! pantalla y las mismas ventanas dan siempre la misma distribución.
|
|
|
|
#![cfg_attr(not(test), no_std)]
|
|
#![forbid(unsafe_code)]
|
|
|
|
// Lógica pura sobre `core` + `alloc`: sin `std`. Así el mismo motor de
|
|
// teselado compila para Linux y para el kernel bare-metal de renaser
|
|
// (`x86_64-unknown-none`); el allocator lo aporta el consumidor.
|
|
extern crate alloc;
|
|
|
|
pub mod geometry;
|
|
pub mod layout;
|
|
pub mod workspace;
|
|
|
|
pub use geometry::Rect;
|
|
pub use layout::{tile, LayoutMode, LayoutParams};
|
|
pub use workspace::{Workspace, WindowId};
|