aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-10-08 13:49:58 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-10-09 14:57:02 +0200
commit6c469b90b1ae34bddcb7da19eacfa6ad4467cf35 (patch)
tree1746b4cef5b9710368c7c86b360906a417e0a78f /components/script/dom/canvasrenderingcontext2d.rs
parent05ef233097e17c3cdd0000f434d1592e8e26ff54 (diff)
downloadservo-6c469b90b1ae34bddcb7da19eacfa6ad4467cf35.tar.gz
servo-6c469b90b1ae34bddcb7da19eacfa6ad4467cf35.zip
Share some code between 2D canvas and WebGL
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs24
1 files changed, 3 insertions, 21 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 2617f9e7ed5..dacabcccce5 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -1168,7 +1168,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
// FIXME(nox): This is probably wrong when this is a context for an
// offscreen canvas.
let canvas_size = self.canvas.as_ref().map_or(Size2D::zero(), |c| c.get_size());
- let read_rect = match clip(origin, size, canvas_size) {
+ let read_rect = match pixels::clip(origin, size, canvas_size) {
Some(rect) => rect,
None => {
// All the pixels are outside the canvas surface.
@@ -1220,7 +1220,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
Point2D::new(dirty_x, dirty_y),
Size2D::new(dirty_width, dirty_height),
);
- let src_rect = match clip(src_origin, src_size, imagedata_size) {
+ let src_rect = match pixels::clip(src_origin, src_size, imagedata_size) {
Some(rect) => rect,
None => return,
};
@@ -1230,7 +1230,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
);
// By clipping to the canvas surface, we avoid sending any pixel
// that would fall outside it.
- let dst_rect = match clip(dst_origin, src_rect.size, canvas_size) {
+ let dst_rect = match pixels::clip(dst_origin, src_rect.size, canvas_size) {
Some(rect) => rect,
None => return,
};
@@ -1537,21 +1537,3 @@ fn adjust_size_sign(
}
(origin, size.to_u32())
}
-
-fn clip(
- mut origin: Point2D<i32>,
- mut size: Size2D<u32>,
- surface: Size2D<u32>,
-) -> Option<Rect<u32>> {
- if origin.x < 0 {
- size.width = size.width.saturating_sub(-origin.x as u32);
- origin.x = 0;
- }
- if origin.y < 0 {
- size.height = size.height.saturating_sub(-origin.y as u32);
- origin.y = 0;
- }
- Rect::new(origin.to_u32(), size)
- .intersection(&Rect::from_size(surface))
- .filter(|rect| !rect.is_empty())
-}