Use a new clipping layer only when necessary in Image::draw

This commit is contained in:
Héctor Ramón Jiménez 2022-02-16 17:35:28 +07:00
parent c6486978de
commit 395eacfc10
No known key found for this signature in database
GPG key ID: 140CC052C94F138E

View file

@ -121,8 +121,9 @@ where
let image_size = Size::new(width as f32, height as f32);
let adjusted_fit = self.fit.fit(image_size, layout.bounds().size());
let bounds = layout.bounds();
renderer.with_layer(layout.bounds(), |renderer| {
let render = |renderer: &mut Renderer| {
renderer.draw(
self.handle.clone(),
Rectangle {
@ -131,7 +132,15 @@ where
..layout.bounds()
},
)
})
};
if adjusted_fit.width > bounds.width
|| adjusted_fit.height > bounds.height
{
renderer.with_layer(layout.bounds(), render);
} else {
render(renderer)
}
}
fn hash_layout(&self, state: &mut Hasher) {