1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5[
6    Constructor,
7    Constructor(DOMMatrixReadOnly other),
8    // FIXME: Should implement more constructors (See: crbug.com/388780)
9    RuntimeEnabled=GeometryInterfaces,
10] interface DOMMatrix : DOMMatrixReadOnly {
11    // These attributes are simple aliases for certain elements of the 4x4 matrix
12    attribute unrestricted double a;
13    attribute unrestricted double b;
14    attribute unrestricted double c;
15    attribute unrestricted double d;
16    attribute unrestricted double e;
17    attribute unrestricted double f;
18
19    attribute unrestricted double m11;
20    attribute unrestricted double m12;
21    attribute unrestricted double m13;
22    attribute unrestricted double m14;
23    attribute unrestricted double m21;
24    attribute unrestricted double m22;
25    attribute unrestricted double m23;
26    attribute unrestricted double m24;
27    attribute unrestricted double m31;
28    attribute unrestricted double m32;
29    attribute unrestricted double m33;
30    attribute unrestricted double m34;
31    attribute unrestricted double m41;
32    attribute unrestricted double m42;
33    attribute unrestricted double m43;
34    attribute unrestricted double m44;
35
36    // FIXME: Should implement some methods (See: crbug.com/388780)
37    // Mutable transform methods
38    DOMMatrix multiplySelf(DOMMatrix other);
39    DOMMatrix preMultiplySelf(DOMMatrix other);
40    DOMMatrix translateSelf(unrestricted double tx,
41                            unrestricted double ty,
42                            optional unrestricted double tz = 0);
43    DOMMatrix scaleSelf(unrestricted double scale,
44                        optional unrestricted double ox = 0,
45                        optional unrestricted double oy = 0);
46    DOMMatrix scale3dSelf(unrestricted double scale,
47                          optional unrestricted double ox = 0,
48                          optional unrestricted double oy = 0,
49                          optional unrestricted double oz = 0);
50    DOMMatrix scaleNonUniformSelf(unrestricted double sx,
51                                  optional unrestricted double sy = 1,
52                                  optional unrestricted double sz = 1,
53                                  optional unrestricted double ox = 0,
54                                  optional unrestricted double oy = 0,
55                                  optional unrestricted double oz = 0);
56};
57