Skip to main content

Renderer

Trait Renderer 

Source
pub trait Renderer {
    type Scene: RenderScene;
    type Error;

    // Required methods
    fn scene(&self) -> &Self::Scene;
    fn scene_mut(&mut self) -> &mut Self::Scene;
    fn rebuild_scene(
        &mut self,
        layout_tree: &LayoutTree,
        viewport: Size,
    ) -> Result<(), Self::Error>;
    fn rebuild_scene_from_applier(
        &mut self,
        applier: &mut MemoryApplier,
        root: NodeId,
        viewport: Size,
    ) -> Result<(), Self::Error>;

    // Provided methods
    fn attach_app_context_services(&mut self, _app_context: &AppContext) { ... }
    fn update_scene_from_applier(
        &mut self,
        applier: &mut MemoryApplier,
        root: NodeId,
        viewport: Size,
        dirty_nodes: &[NodeId],
    ) -> Result<(), Self::Error> { ... }
    fn draw_dev_overlay(&mut self, _text: &str, _viewport: Size) { ... }
}
Expand description

Abstraction implemented by concrete renderer backends.

Required Associated Types§

Required Methods§

Source

fn scene(&self) -> &Self::Scene

Source

fn scene_mut(&mut self) -> &mut Self::Scene

Source

fn rebuild_scene( &mut self, layout_tree: &LayoutTree, viewport: Size, ) -> Result<(), Self::Error>

Source

fn rebuild_scene_from_applier( &mut self, applier: &mut MemoryApplier, root: NodeId, viewport: Size, ) -> Result<(), Self::Error>

Rebuilds the scene by traversing the LayoutNode tree directly via Applier.

This is the new architecture that eliminates per-frame LayoutTree reconstruction. Implementors must read layout state from LayoutNode.layout_state() directly.

Provided Methods§

Source

fn attach_app_context_services(&mut self, _app_context: &AppContext)

Installs renderer-provided app services into the target AppContext.

AppShell calls this before the first composition pass. Renderers that provide text measurement or other per-app services should install them here rather than as constructor side effects.

Source

fn update_scene_from_applier( &mut self, applier: &mut MemoryApplier, root: NodeId, viewport: Size, dirty_nodes: &[NodeId], ) -> Result<(), Self::Error>

Source

fn draw_dev_overlay(&mut self, _text: &str, _viewport: Size)

Draw a development overlay (e.g., FPS counter) on top of the scene.

This is called after rebuild_scene when dev options are enabled. The text is drawn directly by the renderer without affecting composition.

Default implementation does nothing.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§