//! Shared explicit-construction UI substrate for RUIN. //! //! This crate intentionally starts with explicit Rust data construction rather than a proc-macro //! authoring layer. The goal is to validate the threading, windowing, and scene handoff model //! before committing to ergonomic surface syntax. Concrete platform and renderer backends live in //! sibling crates. pub(crate) mod trace_targets { pub const PLATFORM: &str = "ruin_ui::platform"; pub const SCENE: &str = "ruin_ui::scene"; #[allow(dead_code)] pub const TEXT_PERF: &str = "ruin_ui::text_perf"; } mod image; mod interaction; mod keyboard; mod layout; mod platform; mod runtime; mod scene; mod text; mod tree; mod window; pub use image::{ImageFit, ImageResource, ImageResourceError}; pub use interaction::{ PointerButton, PointerEvent, PointerEventKind, PointerRouter, RoutedPointerEvent, RoutedPointerEventKind, }; pub use keyboard::{KeyboardEvent, KeyboardEventKind, KeyboardKey, KeyboardModifiers}; pub use layout::{ HitTarget, InteractionTree, LayoutCache, LayoutNode, LayoutPath, LayoutSnapshot, ScrollMetrics, TextHitTarget, layout_snapshot, layout_snapshot_with_cache, layout_snapshot_with_text_system, }; pub use layout::{layout_scene, layout_scene_with_text_system}; pub use platform::{ PlatformClosed, PlatformEndpoint, PlatformEvent, PlatformProxy, PlatformRequest, PlatformRuntime, start_headless, }; pub use runtime::{EventStreamClosed, UiRuntime, WindowController}; pub use scene::{ ClipRegion, Color, DisplayItem, GlyphInstance, Point, PreparedImage, PreparedText, PreparedTextLine, Quad, Rect, RoundedRect, SceneSnapshot, ShadowRect, TextLayoutData, Translation, UiSize, }; pub use text::{ TextAlign, TextFontFamily, TextSelectionStyle, TextSpan, TextSpanSlant, TextSpanWeight, TextStyle, TextSystem, TextWrap, }; pub use tree::{ Border, BoxShadow, BoxShadowKind, CornerRadius, CursorIcon, Edges, Element, ElementId, FlexDirection, ScrollbarStyle, Style, }; pub use window::{ DecorationMode, WindowConfigured, WindowId, WindowLifecycle, WindowSpec, WindowUpdate, };