Struct pax_runtime::slot::SlotInstance
source · pub struct SlotInstance { /* private fields */ }Expand description
A special “control-flow” primitive (a la yield or perhaps goto) — represents a slot into which
an slot_child can be rendered. Slot relies on slot_children being present
on the [Runtime] stack and will not render any content if there are no slot_children found.
Consider a Stacker: the owner of a Stacker passes the Stacker some nodes to render inside the cells of the Stacker. To the owner of the Stacker, those nodes might seem like “children,” but to the Stacker they are “slot_children” — children provided from the outside. Inside Stacker’s template, there are a number of Slots — this primitive — that become the final rendered home of those slot_children. This same technique is portable and applicable elsewhere via Slot.
Trait Implementations§
source§impl InstanceNode for SlotInstance
impl InstanceNode for SlotInstance
fn instantiate(args: InstantiationArgs) -> Rc<Self>where
Self: Sized,
source§fn handle_mount(
self: Rc<Self>,
expanded_node: &Rc<ExpandedNode>,
context: &Rc<RuntimeContext>,
)
fn handle_mount( self: Rc<Self>, expanded_node: &Rc<ExpandedNode>, context: &Rc<RuntimeContext>, )
Fires during the tick when a node is first attached to the render tree. For example,
this event fires by all nodes on the global first tick, and by all nodes in a subtree
when a
Conditional subsequently turns on a subtree (i.e. when the Conditionals criterion becomes true after being false through the end of at least 1 frame.)
A use-case: send a message to native renderers that a Text element should be rendered and trackedsource§fn update(
self: Rc<Self>,
expanded_node: &Rc<ExpandedNode>,
_context: &Rc<RuntimeContext>,
)
fn update( self: Rc<Self>, expanded_node: &Rc<ExpandedNode>, _context: &Rc<RuntimeContext>, )
Updates the expanded node, recomputing its properties and possibly updating its children
fn resolve_debug( &self, f: &mut Formatter<'_>, _expanded_node: Option<&ExpandedNode>, ) -> Result
source§fn base(&self) -> &BaseInstance
fn base(&self) -> &BaseInstance
Retrieves the base instance, containing common functionality that all instances share
source§fn handle_pre_render(
&self,
expanded_node: &ExpandedNode,
context: &Rc<RuntimeContext>,
rcs: &mut dyn RenderContext,
)
fn handle_pre_render( &self, expanded_node: &ExpandedNode, context: &Rc<RuntimeContext>, rcs: &mut dyn RenderContext, )
Second lifecycle method during each render loop, occurs after
properties have been computed, but before rendering
Example use-case: perform side-effects to the drawing contexts.
This is how [
Frame] performs clipping, for example.
Occurs in a pre-order traversal of the render tree.source§fn render(
&self,
expanded_node: &ExpandedNode,
context: &Rc<RuntimeContext>,
rcs: &mut dyn RenderContext,
)
fn render( &self, expanded_node: &ExpandedNode, context: &Rc<RuntimeContext>, rcs: &mut dyn RenderContext, )
Third lifecycle method during each render loop, occurs
after all descendents have been rendered.
Occurs in a post-order traversal of the render tree. Most primitives
are expected to draw their contents to the rendering context during this event.
source§fn handle_post_render(
&self,
expanded_node: &ExpandedNode,
context: &Rc<RuntimeContext>,
rcs: &mut dyn RenderContext,
)
fn handle_post_render( &self, expanded_node: &ExpandedNode, context: &Rc<RuntimeContext>, rcs: &mut dyn RenderContext, )
Fourth and final lifecycle method during each render loop, occurs
after all descendents have been rendered AND the current node has been rendered.
Useful for clean-up, e.g. this is where
Frame cleans up the drawing contexts
to stop clipping.
Occurs in a post-order traversal of the render tree.source§fn handle_unmount(
&self,
expanded_node: &Rc<ExpandedNode>,
context: &Rc<RuntimeContext>,
)
fn handle_unmount( &self, expanded_node: &Rc<ExpandedNode>, context: &Rc<RuntimeContext>, )
Fires during element unmount, when an element is about to be removed from the render tree (e.g. by a
Conditional)
A use-case: send a message to native renderers that a Text element should be removedsource§fn handle_scroll(&self, args_scroll: Scroll)
fn handle_scroll(&self, args_scroll: Scroll)
Invoked by event interrupts to pass scroll information to render node
fn get_template(&self) -> Option<&InstanceNodePtrList>
source§fn clips_content(&self, _expanded_node: &ExpandedNode) -> bool
fn clips_content(&self, _expanded_node: &ExpandedNode) -> bool
Used by frame to control content clipping
fn handle_native_interrupt( &self, _expanded_node: &Rc<ExpandedNode>, _interrupt: &NativeInterrupt, )
Auto Trait Implementations§
impl !Freeze for SlotInstance
impl !RefUnwindSafe for SlotInstance
impl !Send for SlotInstance
impl !Sync for SlotInstance
impl Unpin for SlotInstance
impl !UnwindSafe for SlotInstance
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
source§fn round_into(self) -> U
fn round_into(self) -> U
Performs the conversion.