summaryrefslogtreecommitdiffstats
path: root/native/src/overlay.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-04-16 13:22:00 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-07-08 10:41:16 +0200
commitf064f0482b653a1fbee4afbddcecf91e3a399004 (patch)
tree2a468e4dc80be13cbf0ae7dd703607010e16697c /native/src/overlay.rs
parentc901f40fd6c5aa39f4dc056b2b59bc7133b287e6 (diff)
downloadiced-f064f0482b653a1fbee4afbddcecf91e3a399004.tar.gz
iced-f064f0482b653a1fbee4afbddcecf91e3a399004.tar.bz2
iced-f064f0482b653a1fbee4afbddcecf91e3a399004.zip
Introduce `Layer` trait
Diffstat (limited to '')
-rw-r--r--native/src/overlay.rs37
1 files changed, 26 insertions, 11 deletions
diff --git a/native/src/overlay.rs b/native/src/overlay.rs
index d34432a4..a4bd5ea3 100644
--- a/native/src/overlay.rs
+++ b/native/src/overlay.rs
@@ -1,26 +1,41 @@
-use crate::{layout, Clipboard, Event, Hasher, Layout, Point};
+use crate::{layout, Clipboard, Event, Hasher, Layer, Layout, Point, Size};
-pub trait Overlay<Message, Renderer>
+#[allow(missing_debug_implementations)]
+pub struct Overlay<'a, Message, Renderer> {
+ position: Point,
+ layer: Box<dyn Layer<Message, Renderer> + 'a>,
+}
+
+impl<'a, Message, Renderer> Overlay<'a, Message, Renderer>
where
Renderer: crate::Renderer,
{
- fn layout(
- &self,
- renderer: &Renderer,
- limits: &layout::Limits,
- ) -> layout::Node;
+ pub fn new(
+ position: Point,
+ layer: Box<dyn Layer<Message, Renderer> + 'a>,
+ ) -> Self {
+ Self { position, layer }
+ }
- fn draw(
+ pub fn layout(&self, renderer: &Renderer, bounds: Size) -> layout::Node {
+ self.layer.layout(renderer, bounds, self.position)
+ }
+
+ pub fn draw(
&self,
renderer: &mut Renderer,
defaults: &Renderer::Defaults,
layout: Layout<'_>,
cursor_position: Point,
- ) -> Renderer::Output;
+ ) -> Renderer::Output {
+ self.layer.draw(renderer, defaults, layout, cursor_position)
+ }
- fn hash_layout(&self, state: &mut Hasher);
+ pub fn hash_layout(&self, state: &mut Hasher) {
+ self.layer.hash_layout(state, self.position);
+ }
- fn on_event(
+ pub fn on_event(
&mut self,
_event: Event,
_layout: Layout<'_>,