[−][src]Trait coffee::ui::core::Widget
A component that displays information or allows interaction.
If you want to build a custom widget, you will need to implement this trait.
Additionally, remember to also provide Into<Element>
so your users can
easily turn your Widget
into a generic Element
Required methods
fn node(&self, renderer: &Renderer) -> Node
Returns the Node
of the Widget
.
This Node
is used by the runtime to compute the Layout
of the
user interface.
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
Draws the Widget
using the associated Renderer
.
It must return the MouseCursor
state for the Widget
.
fn hash(&self, state: &mut Hasher)
Computes the layout hash of the Widget
.
The produced hash is used by the runtime to decide if the Layout
needs to be recomputed between frames. Therefore, to ensure maximum
efficiency, the hash should only be affected by the properties of the
Widget
that can affect layouting.
For example, the Text
widget does not hash its color property, as
its value cannot affect the overall Layout
of the user interface.
Provided methods
fn on_event(
&mut self,
_event: Event,
_layout: Layout,
_cursor_position: Point,
_messages: &mut Vec<Message>
)
&mut self,
_event: Event,
_layout: Layout,
_cursor_position: Point,
_messages: &mut Vec<Message>
)
Implementors
impl<'a, Message, Renderer> Widget<Message, Renderer> for Button<'a, Message> where
Renderer: Renderer,
Message: Copy + Debug,
[src]
Renderer: Renderer,
Message: Copy + Debug,
fn node(&self, _renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<'a, Message, Renderer> Widget<Message, Renderer> for Panel<'a, Message, Renderer> where
Renderer: Renderer,
[src]
Renderer: Renderer,
fn node(&self, renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<'a, Message, Renderer> Widget<Message, Renderer> for Slider<'a, Message> where
Renderer: Renderer,
[src]
Renderer: Renderer,
fn node(&self, _renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<'a, Message, Renderer> Widget<Message, Renderer> for Column<'a, Message, Renderer>
[src]
fn node(&self, renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<'a, Message, Renderer> Widget<Message, Renderer> for Row<'a, Message, Renderer>
[src]
fn node(&self, renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<Message, Renderer> Widget<Message, Renderer> for Checkbox<Message> where
Renderer: Renderer + Renderer,
[src]
Renderer: Renderer + Renderer,
fn node(&self, renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<Message, Renderer> Widget<Message, Renderer> for Image where
Renderer: Renderer,
[src]
Renderer: Renderer,
fn node(&self, _renderer: &Renderer) -> Node
[src]
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
_cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
_cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<Message, Renderer> Widget<Message, Renderer> for ProgressBar where
Renderer: Renderer,
[src]
Renderer: Renderer,
fn node(&self, _renderer: &Renderer) -> Node
[src]
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
_cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
_cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<Message, Renderer> Widget<Message, Renderer> for Radio<Message> where
Renderer: Renderer + Renderer,
Message: Copy + Debug,
[src]
Renderer: Renderer + Renderer,
Message: Copy + Debug,
fn node(&self, renderer: &Renderer) -> Node
[src]
fn on_event(
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
[src]
&mut self,
event: Event,
layout: Layout,
cursor_position: Point,
messages: &mut Vec<Message>
)
fn draw(
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
[src]
&self,
renderer: &mut Renderer,
layout: Layout,
cursor_position: Point
) -> MouseCursor
fn hash(&self, state: &mut Hasher)
[src]
impl<Message, Renderer> Widget<Message, Renderer> for Text where
Renderer: Renderer,
[src]
Renderer: Renderer,