feat: integra renaser (kernel SASOS bare-metal) al monorepo
renaser —kernel asíncrono de espacio de direcciones único, no-POSIX, `no_std` x86_64— entra al monorepo como su PROPIO workspace de Cargo, no fusionado: usa toolchain nightly, target `x86_64-unknown-none` y `panic = "abort"`, incompatibles con los perfiles globales de brahman. - `renaser/` — copia del proyecto (sin su `.git`; el repo original conserva su historia standalone). Workspace propio con su `rust-toolchain.toml` y `.cargo/`. - `exclude = ["renaser"]` en el workspace de brahman: Cargo lo trata como ajeno. - El kernel de renaser path-depende `mirada-layout` cruzando la frontera de workspace — primer núcleo compartido. Semilla de la Fase 8 (compositor): geometría de teselado compartida, framebuffer nativo de renaser; smithay se queda en el lado Linux. Verificado: `cargo build -p boot` compila kernel + imagen UEFI con mirada-layout enlazado para bare-metal. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// =============================================================================
|
||||
// renaser :: kernel/src/texto.rs — Fase 3 :: el texto como caso del dibujo
|
||||
// -----------------------------------------------------------------------------
|
||||
// Con el heap activo, el texto deja de ser un mapa de bits estatico. Una
|
||||
// tipografia vectorial se empotra en el binario y se rasteriza glifo a glifo,
|
||||
// bajo demanda: el texto se vuelve, literalmente, un caso particular del
|
||||
// dibujo — la promesa fundacional de renaser.
|
||||
// =============================================================================
|
||||
|
||||
use alloc::vec::Vec;
|
||||
|
||||
use fontdue::{Font, FontSettings, Metrics};
|
||||
use spin::Once;
|
||||
|
||||
/// La tipografia vectorial, empotrada en el propio binario del kernel.
|
||||
static FUENTE_TTF: &[u8] = include_bytes!("../assets/font.ttf");
|
||||
|
||||
/// La fuente ya analizada. Se funde una sola vez, tras activar el heap.
|
||||
static FUENTE: Once<Font> = Once::new();
|
||||
|
||||
/// Analiza la tipografia empotrada. Requiere el heap ya activo.
|
||||
pub fn init() {
|
||||
FUENTE.call_once(|| {
|
||||
Font::from_bytes(FUENTE_TTF, FontSettings::default())
|
||||
.expect("renaser :: la tipografia empotrada es invalida")
|
||||
});
|
||||
}
|
||||
|
||||
/// Rasteriza un glifo al vuelo: devuelve sus metricas de colocacion y un mapa
|
||||
/// de cobertura (un byte de opacidad, 0..=255, por cada pixel del glifo).
|
||||
pub fn rasterizar(caracter: char, tam_px: f32) -> (Metrics, Vec<u8>) {
|
||||
FUENTE
|
||||
.get()
|
||||
.expect("renaser :: la tipografia no fue fundida")
|
||||
.rasterize(caracter, tam_px)
|
||||
}
|
||||
Reference in New Issue
Block a user