mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Refactor draw_image and make draw_image_self call draw_image in canvas.
This commit is contained in:
parent
40f7da0aac
commit
3a6679b3b5
1 changed files with 10 additions and 23 deletions
|
@ -69,19 +69,19 @@ impl<'a> CanvasData<'a> {
|
||||||
// It discards the extra pixels (if any) that won't be painted
|
// It discards the extra pixels (if any) that won't be painted
|
||||||
let image_data = crop_image(image_data, image_size, source_rect);
|
let image_data = crop_image(image_data, image_size, source_rect);
|
||||||
|
|
||||||
|
let writer = |draw_target: &DrawTarget| {
|
||||||
|
write_image(&draw_target, image_data, source_rect.size, dest_rect,
|
||||||
|
smoothing_enabled, self.state.draw_options.composition,
|
||||||
|
self.state.draw_options.alpha);
|
||||||
|
};
|
||||||
|
|
||||||
if self.need_to_draw_shadow() {
|
if self.need_to_draw_shadow() {
|
||||||
let rect = Rect::new(Point2D::new(dest_rect.origin.x as f32, dest_rect.origin.y as f32),
|
let rect = Rect::new(Point2D::new(dest_rect.origin.x as f32, dest_rect.origin.y as f32),
|
||||||
Size2D::new(dest_rect.size.width as f32, dest_rect.size.height as f32));
|
Size2D::new(dest_rect.size.width as f32, dest_rect.size.height as f32));
|
||||||
|
|
||||||
self.draw_with_shadow(&rect, |new_draw_target: &DrawTarget| {
|
self.draw_with_shadow(&rect, writer);
|
||||||
write_image(&new_draw_target, image_data, source_rect.size, dest_rect,
|
|
||||||
smoothing_enabled, self.state.draw_options.composition,
|
|
||||||
self.state.draw_options.alpha);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
write_image(&self.drawtarget, image_data, source_rect.size, dest_rect,
|
writer(&self.drawtarget);
|
||||||
smoothing_enabled, self.state.draw_options.composition,
|
|
||||||
self.state.draw_options.alpha);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,21 +96,8 @@ impl<'a> CanvasData<'a> {
|
||||||
// In this case source and target are the same canvas
|
// In this case source and target are the same canvas
|
||||||
let image_data = self.read_pixels(source_rect.to_i32(), image_size);
|
let image_data = self.read_pixels(source_rect.to_i32(), image_size);
|
||||||
|
|
||||||
let writer = |draw_target: &DrawTarget| {
|
// The dimensions of image_data are source_rect.size
|
||||||
write_image(draw_target, image_data, source_rect.size, dest_rect,
|
self.draw_image(image_data, source_rect.size, dest_rect, source_rect, smoothing_enabled);
|
||||||
smoothing_enabled, self.state.draw_options.composition,
|
|
||||||
self.state.draw_options.alpha);
|
|
||||||
};
|
|
||||||
|
|
||||||
if self.need_to_draw_shadow() {
|
|
||||||
let rect = Rect::new(Point2D::new(dest_rect.origin.x as f32, dest_rect.origin.y as f32),
|
|
||||||
Size2D::new(dest_rect.size.width as f32, dest_rect.size.height as f32));
|
|
||||||
|
|
||||||
self.draw_with_shadow(&rect, writer);
|
|
||||||
} else {
|
|
||||||
// Writes on target canvas
|
|
||||||
writer(&self.drawtarget);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save_context_state(&mut self) {
|
pub fn save_context_state(&mut self) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue