pub struct Host { /* private fields */ }Implementations§
Source§impl Host
impl Host
Sourcepub fn new(
factory: impl Fn() -> Box<dyn Runtime> + Send + Sync + 'static,
) -> Self
pub fn new( factory: impl Fn() -> Box<dyn Runtime> + Send + Sync + 'static, ) -> Self
A Host for the runtime factory makes, in the theme the application launched with.
Sourcepub fn with_theme(
factory: impl Fn() -> Box<dyn Runtime> + Send + Sync + 'static,
theme: Theme,
) -> Self
pub fn with_theme( factory: impl Fn() -> Box<dyn Runtime> + Send + Sync + 'static, theme: Theme, ) -> Self
The theme the application chose. Choosing nothing follows the host platform, with Material 3 where the platform has no look of its own.
pub fn rebuild(&mut self) -> Result<&[u8], ProtocolError>
pub fn dispatch_event( &mut self, bytes: &[u8], ) -> Result<(&[u8], i64), ProtocolError>
Sourcepub fn arena(&self) -> (*const u8, usize)
pub fn arena(&self) -> (*const u8, usize)
The batch arena, reported to the Renderer on every boundary call.
Sourcepub fn resync(&mut self) -> Result<(&[u8], i64), ProtocolError>
pub fn resync(&mut self) -> Result<(&[u8], i64), ProtocolError>
Answers with the whole tree, for a Renderer that no longer has a node table.
The Host keeps no shadow of what it has already sent, so the only way to produce a full-tree batch is to build the application again, and that resets component state. A Renderer that keeps its node table across a configuration change never needs this call, which is what the Android host does.
pub fn dispatch( &mut self, event: HostEvent<'_>, ) -> Result<(&[u8], i64), ProtocolError>
pub fn render_frame( &mut self, _frame_time_nanos: u64, ) -> Result<&[u8], ProtocolError>
Sourcepub fn append_text(&mut self, node_id: u32, tail: &str)
pub fn append_text(&mut self, node_id: u32, tail: &str)
Queues a streamed tail for the next frame. Tokens arriving inside one frame are
merged into a single AppendText record, so a token never costs a batch of its own.
Sourcepub fn register_asset(
&mut self,
asset_id: u32,
kind: AssetKind,
bytes: &[u8],
) -> Result<&[u8], ProtocolError>
pub fn register_asset( &mut self, asset_id: u32, kind: AssetKind, bytes: &[u8], ) -> Result<&[u8], ProtocolError>
Registers one asset and returns the batch that carries it.
The bytes are copied once here and once more by the Renderer into its cache. After that the id is all that travels, so drawing the same image every frame costs a fixed-layout property record and nothing else.
Sourcepub fn register_icon(
&mut self,
asset_id: u32,
role: IconRole,
) -> Result<&[u8], ProtocolError>
pub fn register_icon( &mut self, asset_id: u32, role: IconRole, ) -> Result<&[u8], ProtocolError>
Registers an icon by the meaning it carries. The Renderer holds the artwork for every design system, so what crosses is the role and not a picture or a name.
Sourcepub fn release_asset(&mut self, asset_id: u32) -> Result<&[u8], ProtocolError>
pub fn release_asset(&mut self, asset_id: u32) -> Result<&[u8], ProtocolError>
Drops the asset from the Renderer’s cache. Using the id afterwards is a reported protocol error.