on 9c74b86 help sign in
44 lines 1.2 kB history raw
2Elm.Native.Graphics.Matrix = function(elm) {
3 "use strict";
5 elm.Native = elm.Native || {};
6 elm.Native.Graphics = elm.Native.Graphics || {};
7 if (elm.Native.Graphics.Matrix) return elm.Native.Graphics.Matrix;
9 try { Float32Array; } catch(e) { Float32Array = Array; }
10 var A = Float32Array;
12 var identity = new A([1,0,0,0,1,0]);
14 function rotate(t,m) {
15 var c = Math.cos(t);
16 var s = Math.sin(t);
17 var m0 = m[0], m1 = m[1], m3 = m[3], m4 = m[4];
18 return new A([m0*c + m1*-s, m0*s + m1*c, m[2],
19 m3*c + m4*-s, m3*s + m4*c, m[5]]);
20 }
21 function scale(x,y,m) {
22 return new A([m[0]*x, m[1]*y, m[2],
23 m[3]*x, m[4]*y, m[5]]);
24 }
25 function move(x,y,m) {
26 var m0 = m[0], m1 = m[1], m3 = m[3], m4 = m[4];
27 return new A([m0, m1, m0*x + m1*y + m[2],
28 m3, m4, m3*x + m4*y + m[5]]);
29 }
30 function matrix(a,b,c,d,e,f,m) {
31 var m0 = m[0], m1 = m[1], m3 = m[3], m4 = m[4];
32 return new A([m0*a + m1*d, m0*b + m1*e, m0*c + m1*f + m[2],
33 m3*a + m4*d, m3*b + m4*e, m3*c + m4*f + m[5]]);
34 }
36 return elm.Native.Graphics.Matrix = {
37 identity:identity,
38 rotation:F2(rotation),
39 scale:F3(scale),
40 move:F3(move),
41 matrix:F7(matrix)
42 };
44};