aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-10-04 12:11:39 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-10-05 17:07:56 +0200
commit3d910feb3a59ced307b5152b2f3b74c7725322c0 (patch)
tree444974fb69e34587135638c75b17f2905624c567 /components/script/dom/canvasrenderingcontext2d.rs
parent62ea3c093a48362578b1f49d5a65270702015839 (diff)
downloadservo-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.rs49
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),