diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-04 12:11:39 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-10-05 17:07:56 +0200 |
commit | 3d910feb3a59ced307b5152b2f3b74c7725322c0 (patch) | |
tree | 444974fb69e34587135638c75b17f2905624c567 /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 62ea3c093a48362578b1f49d5a65270702015839 (diff) | |
download | servo-3d910feb3a59ced307b5152b2f3b74c7725322c0.tar.gz servo-3d910feb3a59ced307b5152b2f3b74c7725322c0.zip |
Align canvas.putImageData with spec
The arguments are supposed to be long values, not floats.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 3482c3d925a..31298ccb648 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -1191,39 +1191,26 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { } // https://html.spec.whatwg.org/multipage/#dom-context-2d-putimagedata - fn PutImageData(&self, imagedata: &ImageData, dx: Finite<f64>, dy: Finite<f64>) { - self.PutImageData_( - imagedata, - dx, - dy, - Finite::wrap(0f64), - Finite::wrap(0f64), - Finite::wrap(imagedata.Width() as f64), - Finite::wrap(imagedata.Height() as f64), - ) + fn PutImageData(&self, imagedata: &ImageData, dx: i32, dy: i32) { + self.PutImageData_(imagedata, dx, dy, 0, 0, imagedata.Width() as i32, imagedata.Height() as i32) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-putimagedata fn PutImageData_( &self, imagedata: &ImageData, - dx: Finite<f64>, - dy: Finite<f64>, - dirty_x: Finite<f64>, - dirty_y: Finite<f64>, - dirty_width: Finite<f64>, - dirty_height: Finite<f64>, + dx: i32, + dy: i32, + mut dirty_x: i32, + mut dirty_y: i32, + mut dirty_width: i32, + mut dirty_height: i32, ) { - let imagedata_size = Size2D::new(imagedata.Width() as f64, imagedata.Height() as f64); - if imagedata_size.width <= 0. || imagedata_size.height <= 0. { + let imagedata_size = Size2D::new(imagedata.Width() as i32, imagedata.Height() as i32); + if imagedata_size.width <= 0 || imagedata_size.height <= 0 { return; } - let mut dirty_x = *dirty_x; - let mut dirty_y = *dirty_y; - let mut dirty_width = *dirty_width; - let mut dirty_height = *dirty_height; - // Step 1. // Done later. @@ -1231,23 +1218,23 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // TODO: throw InvalidState if buffer is detached. // Step 3. - if dirty_width < 0. { + if dirty_width < 0 { dirty_x += dirty_width; dirty_width = -dirty_width; } - if dirty_height < 0. { + if dirty_height < 0 { dirty_y += dirty_height; dirty_height = -dirty_height; } // Step 4. - if dirty_x < 0. { + if dirty_x < 0 { dirty_width += dirty_x; - dirty_x = 0.; + dirty_x = 0; } - if dirty_y < 0. { + if dirty_y < 0 { dirty_height += dirty_y; - dirty_y = 0.; + dirty_y = 0; } // Step 5. @@ -1259,7 +1246,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { } // Step 6. - if dirty_width <= 0. || dirty_height <= 0. { + if dirty_width <= 0 || dirty_height <= 0 { return; } @@ -1270,7 +1257,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // Step 7. self.send_canvas_2d_msg(Canvas2dMsg::PutImageData( buffer.into(), - Vector2D::new(*dx, *dy), + Vector2D::new(dx, dy), imagedata_size, Rect::new( Point2D::new(dirty_x, dirty_y), |