diff options
author | 2020-04-16 13:22:00 +0200 | |
---|---|---|
committer | 2020-07-08 10:41:16 +0200 | |
commit | f064f0482b653a1fbee4afbddcecf91e3a399004 (patch) | |
tree | 2a468e4dc80be13cbf0ae7dd703607010e16697c /native/src/layer.rs | |
parent | c901f40fd6c5aa39f4dc056b2b59bc7133b287e6 (diff) | |
download | iced-f064f0482b653a1fbee4afbddcecf91e3a399004.tar.gz iced-f064f0482b653a1fbee4afbddcecf91e3a399004.tar.bz2 iced-f064f0482b653a1fbee4afbddcecf91e3a399004.zip |
Introduce `Layer` trait
Diffstat (limited to 'native/src/layer.rs')
-rw-r--r-- | native/src/layer.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/native/src/layer.rs b/native/src/layer.rs new file mode 100644 index 00000000..d89fb4e5 --- /dev/null +++ b/native/src/layer.rs @@ -0,0 +1,34 @@ +use crate::{layout, Clipboard, Event, Hasher, Layout, Point, Size}; + +pub trait Layer<Message, Renderer> +where + Renderer: crate::Renderer, +{ + fn layout( + &self, + renderer: &Renderer, + bounds: Size, + position: Point, + ) -> layout::Node; + + fn draw( + &self, + renderer: &mut Renderer, + defaults: &Renderer::Defaults, + layout: Layout<'_>, + cursor_position: Point, + ) -> Renderer::Output; + + fn hash_layout(&self, state: &mut Hasher, position: Point); + + fn on_event( + &mut self, + _event: Event, + _layout: Layout<'_>, + _cursor_position: Point, + _messages: &mut Vec<Message>, + _renderer: &Renderer, + _clipboard: Option<&dyn Clipboard>, + ) { + } +} |