diff options
author | Mátyás Mustoha <mmatyas@inf.u-szeged.hu> | 2015-05-05 13:03:34 +0200 |
---|---|---|
committer | Mátyás Mustoha <mmatyas@inf.u-szeged.hu> | 2015-05-06 12:38:48 +0200 |
commit | e3e2119c4ced9f2efe7f1c9109ce092464e3d9de (patch) | |
tree | f82d40ddde85e8e7ec11c82090c8d19cc872e5fd /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 7b87085c1880c60aa3be5b3ec4572a0d93fd5537 (diff) | |
download | servo-e3e2119c4ced9f2efe7f1c9109ce092464e3d9de.tar.gz servo-e3e2119c4ced9f2efe7f1c9109ce092464e3d9de.zip |
Canvas: implement transformation matrix rotation.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index cd02eb18f0e..b7dc0b73dbc 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -355,6 +355,20 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D> self.update_transform() } + // https://html.spec.whatwg.org/multipage/#dom-context-2d-rotate + fn Rotate(self, angle: f64) { + if angle == 0.0 || !angle.is_finite() { + return; + } + + let (sin, cos) = (angle.sin(), angle.cos()); + let transform = self.state.borrow().transform; + self.state.borrow_mut().transform = transform.mul(&Matrix2D::new(cos as f32, sin as f32, + -sin as f32, cos as f32, + 0.0, 0.0)); + self.update_transform() + } + // https://html.spec.whatwg.org/multipage/#dom-context-2d-translate fn Translate(self, x: f64, y: f64) { if !(x.is_finite() && y.is_finite()) { |