diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-06-08 07:03:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-08 07:03:32 -0400 |
commit | 385fa6f3c350668cc47bf6d8bd520cb0d173330d (patch) | |
tree | 672eb696d145a0bf7fa6bfe27dfed4bb9dea4220 | |
parent | 6cd08d5922c667b7c9c4a905a94b1231e85ab847 (diff) | |
parent | 3a6679b3b5623943c9e89f4ff2f00a6db2b48171 (diff) | |
download | servo-385fa6f3c350668cc47bf6d8bd520cb0d173330d.tar.gz servo-385fa6f3c350668cc47bf6d8bd520cb0d173330d.zip |
Auto merge of #21023 - cadubentzen:refactor-draw_image, r=avadacatavra
Refactor draw_image and make draw_image_self call draw_image in canvas.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #21022
<!-- Either: -->
- [X] These changes do not require tests because it is only refactoring and the test for this part was added in #20923
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21023)
<!-- Reviewable:end -->
-rw-r--r-- | components/canvas/canvas_data.rs | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index b71ce2bf76f..6e5d0e679dc 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -69,19 +69,19 @@ impl<'a> CanvasData<'a> { // It discards the extra pixels (if any) that won't be painted 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() { 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, |new_draw_target: &DrawTarget| { - write_image(&new_draw_target, image_data, source_rect.size, dest_rect, - smoothing_enabled, self.state.draw_options.composition, - self.state.draw_options.alpha); - }); + self.draw_with_shadow(&rect, writer); } else { - write_image(&self.drawtarget, image_data, source_rect.size, dest_rect, - smoothing_enabled, self.state.draw_options.composition, - self.state.draw_options.alpha); + writer(&self.drawtarget); } } @@ -96,21 +96,8 @@ impl<'a> CanvasData<'a> { // In this case source and target are the same canvas let image_data = self.read_pixels(source_rect.to_i32(), image_size); - 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() { - 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); - } + // The dimensions of image_data are source_rect.size + self.draw_image(image_data, source_rect.size, dest_rect, source_rect, smoothing_enabled); } pub fn save_context_state(&mut self) { |