//! Backend-agnostic scene abstraction: display lists, fragments, and the //! render backend trait. //! //! Widgets paint by emitting [`DisplayItem`]s into [`Fragment`]s; a tree of //! fragments composes via per-child transforms. Render backends consume the //! fragment tree through the [`RenderBackend`] trait, so nothing above this //! crate knows which renderer is in use. //! //! Geometry and paint vocabulary types come from kurbo and peniko, re-exported //! here as [`geom`] and [`paint`]. Downstream code should spell //! `guiduck_scene::geom::Rect`, not `kurbo::Rect`, so that the choice of //! underlying crates remains this crate's private decision. pub use peniko as paint; pub use peniko::kurbo as geom; pub mod backend; pub mod display_list; pub use backend::{RenderBackend, RenderError}; pub use display_list::{ DisplayItem, Fragment, FragmentId, FragmentStore, Glyph, GlyphRun, NormalizedCoord, ScopeKind, ScopeTracker, Shape, };