diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-08 13:49:58 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-09 14:57:02 +0200 |
commit | 6c469b90b1ae34bddcb7da19eacfa6ad4467cf35 (patch) | |
tree | 1746b4cef5b9710368c7c86b360906a417e0a78f /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 05ef233097e17c3cdd0000f434d1592e8e26ff54 (diff) | |
download | servo-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.rs | 24 |
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()) -} |