diff options
author | 2021-10-28 17:01:23 +0700 | |
---|---|---|
committer | 2021-10-28 17:01:23 +0700 | |
commit | 8b1587421822d9a0e7fa1c2224447da7007dbd30 (patch) | |
tree | 5234edce7f3c3fb96afeaf5c3c7301e659babb2e /native/src/widget | |
parent | 1ec667920a792dbe96786a44b8b3064cae7eaea2 (diff) | |
download | iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.gz iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.bz2 iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.zip |
Implement `Widget::draw` for `image::Viewer`
Diffstat (limited to 'native/src/widget')
-rw-r--r-- | native/src/widget/image.rs | 4 | ||||
-rw-r--r-- | native/src/widget/image/viewer.rs | 18 |
2 files changed, 17 insertions, 5 deletions
diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs index b61904f4..b87c0aab 100644 --- a/native/src/widget/image.rs +++ b/native/src/widget/image.rs @@ -98,7 +98,7 @@ where _cursor_position: Point, _viewport: &Rectangle, ) { - renderer.draw(self.handle.clone(), layout); + renderer.draw(self.handle.clone(), layout.bounds()); } fn hash_layout(&self, state: &mut Hasher) { @@ -228,7 +228,7 @@ pub trait Renderer: crate::Renderer { fn dimensions(&self, handle: &Handle) -> (u32, u32); // Draws an [`Image`]. - fn draw(&mut self, handle: Handle, layout: Layout<'_>); + fn draw(&mut self, handle: Handle, bounds: Rectangle); } impl<'a, Message, Renderer> From<Image> for Element<'a, Message, Renderer> diff --git a/native/src/widget/image/viewer.rs b/native/src/widget/image/viewer.rs index 63087f5f..3e8430f3 100644 --- a/native/src/widget/image/viewer.rs +++ b/native/src/widget/image/viewer.rs @@ -284,9 +284,9 @@ where fn draw( &self, renderer: &mut Renderer, - style: &renderer::Style, + _style: &renderer::Style, layout: Layout<'_>, - cursor_position: Point, + _cursor_position: Point, _viewport: &Rectangle, ) { let bounds = layout.bounds(); @@ -302,7 +302,19 @@ where image_top_left - self.state.offset(bounds, image_size) }; - let is_mouse_over = bounds.contains(cursor_position); + renderer.with_layer(bounds, |renderer| { + renderer.with_translation(translation, |renderer| { + image::Renderer::draw( + renderer, + self.handle.clone(), + Rectangle { + x: bounds.x, + y: bounds.y, + ..Rectangle::with_size(image_size) + }, + ) + }); + }); } fn hash_layout(&self, state: &mut Hasher) { |