Use a new clipping layer only when necessary in Image::draw
This commit is contained in:
parent
c6486978de
commit
395eacfc10
1 changed files with 11 additions and 2 deletions
|
|
@ -121,8 +121,9 @@ where
|
||||||
let image_size = Size::new(width as f32, height as f32);
|
let image_size = Size::new(width as f32, height as f32);
|
||||||
|
|
||||||
let adjusted_fit = self.fit.fit(image_size, layout.bounds().size());
|
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(
|
renderer.draw(
|
||||||
self.handle.clone(),
|
self.handle.clone(),
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|
@ -131,7 +132,15 @@ where
|
||||||
..layout.bounds()
|
..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) {
|
fn hash_layout(&self, state: &mut Hasher) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue