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 | |
| parent | 1ec667920a792dbe96786a44b8b3064cae7eaea2 (diff) | |
| download | iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.gz iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.bz2 iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.zip  | |
Implement `Widget::draw` for `image::Viewer`
Diffstat (limited to '')
| -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) {  | 
