Trait iced_native::widget::Widget
source · pub trait Widget<Message, Renderer>where
Renderer: Renderer,{
// Required methods
fn width(&self) -> Length;
fn height(&self) -> Length;
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node;
fn draw(
&self,
state: &Tree,
renderer: &mut Renderer,
theme: &Renderer::Theme,
style: &Style,
layout: Layout<'_>,
cursor_position: Point,
viewport: &Rectangle
);
// Provided methods
fn tag(&self) -> Tag { ... }
fn state(&self) -> State { ... }
fn children(&self) -> Vec<Tree> { ... }
fn diff(&self, _tree: &mut Tree) { ... }
fn operate(
&self,
_state: &mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer,
_operation: &mut dyn Operation<Message>
) { ... }
fn on_event(
&mut self,
_state: &mut Tree,
_event: Event,
_layout: Layout<'_>,
_cursor_position: Point,
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
_shell: &mut Shell<'_, Message>
) -> Status { ... }
fn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle,
_renderer: &Renderer
) -> Interaction { ... }
fn overlay<'a>(
&'a mut self,
_state: &'a mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer
) -> Option<Element<'a, Message, Renderer>> { ... }
}
Expand description
A component that displays information and allows interaction.
If you want to build your own widgets, you will need to implement this trait.
Examples
The repository has some examples showcasing how to implement a custom widget:
bezier_tool
, a Paint-like tool for drawing Bézier curves usinglyon
.custom_widget
, a demonstration of how to build a custom widget that draws a circle.geometry
, a custom widget showcasing how to draw geometry with theMesh2D
primitive iniced_wgpu
.
Required Methods§
sourcefn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
fn layout(&self, renderer: &Renderer, limits: &Limits) -> Node
Returns the layout::Node
of the Widget
.
This layout::Node
is used by the runtime to compute the Layout
of the
user interface.
Provided Methods§
sourcefn operate(
&self,
_state: &mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer,
_operation: &mut dyn Operation<Message>
)
fn operate( &self, _state: &mut Tree, _layout: Layout<'_>, _renderer: &Renderer, _operation: &mut dyn Operation<Message> )
sourcefn on_event(
&mut self,
_state: &mut Tree,
_event: Event,
_layout: Layout<'_>,
_cursor_position: Point,
_renderer: &Renderer,
_clipboard: &mut dyn Clipboard,
_shell: &mut Shell<'_, Message>
) -> Status
fn on_event( &mut self, _state: &mut Tree, _event: Event, _layout: Layout<'_>, _cursor_position: Point, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, _shell: &mut Shell<'_, Message> ) -> Status
Processes a runtime Event
.
By default, it does nothing.
sourcefn mouse_interaction(
&self,
_state: &Tree,
_layout: Layout<'_>,
_cursor_position: Point,
_viewport: &Rectangle,
_renderer: &Renderer
) -> Interaction
fn mouse_interaction( &self, _state: &Tree, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, _renderer: &Renderer ) -> Interaction
Returns the current mouse::Interaction
of the Widget
.
By default, it returns mouse::Interaction::Idle
.