summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-02-16 17:52:57 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-02-16 18:19:37 +0700
commit6822d1d9f2c5b4fcbf65763c8edd091ac18a657e (patch)
tree5c9370e0122acca19520dc590f257f2a09397f44
parent0aff444941f8b44b5a996dde4810ba6313f43a7e (diff)
downloadiced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.tar.gz
iced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.tar.bz2
iced-6822d1d9f2c5b4fcbf65763c8edd091ac18a657e.zip
Center `Image` inside available bounds when possible
-rw-r--r--native/src/widget/image.rs23
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