diff options
| author | 2022-02-16 17:52:57 +0700 | |
|---|---|---|
| committer | 2022-02-16 18:19:37 +0700 | |
| commit | 6822d1d9f2c5b4fcbf65763c8edd091ac18a657e (patch) | |
| tree | 5c9370e0122acca19520dc590f257f2a09397f44 /native/src | |
| parent | 0aff444941f8b44b5a996dde4810ba6313f43a7e (diff) | |
| download | iced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.tar.gz iced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.tar.bz2 iced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.zip | |
Center `Image` inside available bounds when possible
Diffstat (limited to '')
| -rw-r--r-- | native/src/widget/image.rs | 23 | 
1 files changed, 14 insertions, 9 deletions
| diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs index d83230f2..a2e7f765 100644 --- a/native/src/widget/image.rs +++ b/native/src/widget/image.rs @@ -6,7 +6,8 @@ use crate::image;  use crate::layout;  use crate::renderer;  use crate::{ -    ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, +    ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size, +    Vector, Widget,  };  use std::hash::Hash; @@ -128,14 +129,18 @@ where          let bounds = layout.bounds();          let render = |renderer: &mut Renderer| { -            renderer.draw( -                self.handle.clone(), -                Rectangle { -                    width: adjusted_fit.width, -                    height: adjusted_fit.height, -                    ..layout.bounds() -                }, -            ) +            let offset = Vector::new( +                (bounds.width - adjusted_fit.width).max(0.0) / 2.0, +                (bounds.height - adjusted_fit.height).max(0.0) / 2.0, +            ); + +            let bounds = Rectangle { +                width: adjusted_fit.width, +                height: adjusted_fit.height, +                ..layout.bounds() +            }; + +            renderer.draw(self.handle.clone(), bounds + offset)          };          if adjusted_fit.width > bounds.width | 
