aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-05-05 13:03:34 +0200
committerMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-05-06 12:38:48 +0200
commite3e2119c4ced9f2efe7f1c9109ce092464e3d9de (patch)
treef82d40ddde85e8e7ec11c82090c8d19cc872e5fd /components/script/dom/canvasrenderingcontext2d.rs
parent7b87085c1880c60aa3be5b3ec4572a0d93fd5537 (diff)
downloadservo-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.rs14
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()) {