// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// http://dev.w3.org/fxtf/geometry/#DOMMatrix

[
    Constructor,
    Constructor(DOMMatrixReadOnly other),
    Constructor(sequence<unrestricted double> numberSequence),
    RaisesException=Constructor,
    // FIXME: Should implement more constructors (See: crbug.com/388780)
    // FIXME: Exposed=(Window,Worker)
    RuntimeEnabled=GeometryInterfaces,
] interface DOMMatrix : DOMMatrixReadOnly {
    [RaisesException, NewObject] static DOMMatrix fromFloat32Array(Float32Array array32);
    [RaisesException, NewObject] static DOMMatrix fromFloat64Array(Float64Array array64);
    [RaisesException, NewObject] static DOMMatrix fromMatrix(optional DOMMatrixInit other);

    // These attributes are simple aliases for certain elements of the 4x4 matrix
    inherit attribute unrestricted double a;
    inherit attribute unrestricted double b;
    inherit attribute unrestricted double c;
    inherit attribute unrestricted double d;
    inherit attribute unrestricted double e;
    inherit attribute unrestricted double f;

    inherit attribute unrestricted double m11;
    inherit attribute unrestricted double m12;
    inherit attribute unrestricted double m13;
    inherit attribute unrestricted double m14;
    inherit attribute unrestricted double m21;
    inherit attribute unrestricted double m22;
    inherit attribute unrestricted double m23;
    inherit attribute unrestricted double m24;
    inherit attribute unrestricted double m31;
    inherit attribute unrestricted double m32;
    inherit attribute unrestricted double m33;
    inherit attribute unrestricted double m34;
    inherit attribute unrestricted double m41;
    inherit attribute unrestricted double m42;
    inherit attribute unrestricted double m43;
    inherit attribute unrestricted double m44;

    // TODO(zino): Should implement rotateSelf() method (See: crbug.com/645878)
    // TODO(zino): Should implement rotateFromVectorSelf() method (See: crbug.com/645882)
    // TODO(zino): Should implement rotateAxisAngleSelf() method (See: crbug.com/645883)
    // TODO(zino): Should implement setMatrixValue() method (See: crbug.com/645884)
    // TODO(zino): Should remove scaleNonUniformSelf() method (See: crbug.com/645887)
    // Mutable transform methods
    [RaisesException] DOMMatrix multiplySelf(optional DOMMatrixInit other);
    [RaisesException] DOMMatrix preMultiplySelf(optional DOMMatrixInit other);
    DOMMatrix translateSelf(unrestricted double tx,
                            unrestricted double ty,
                            optional unrestricted double tz = 0);
    DOMMatrix scaleSelf(optional unrestricted double scaleX = 1,
                        optional unrestricted double scaleY,
                        optional unrestricted double scaleZ = 1,
                        optional unrestricted double originX = 0,
                        optional unrestricted double originY = 0,
                        optional unrestricted double originZ = 0);
    DOMMatrix scale3dSelf(unrestricted double scale,
                          optional unrestricted double originX = 0,
                          optional unrestricted double originY = 0,
                          optional unrestricted double originZ = 0);
    DOMMatrix rotateSelf(optional unrestricted double rotX = 0,
                          optional unrestricted double rotY,
                          optional unrestricted double rotZ);
    DOMMatrix rotateFromVectorSelf(optional unrestricted double x = 0,
                                  optional unrestricted double y = 0);
    DOMMatrix rotateAxisAngleSelf(optional unrestricted double x = 0,
                                  optional unrestricted double y = 0,
                                  optional unrestricted double z = 0,
                                  optional unrestricted double angle = 0);
    DOMMatrix skewXSelf(optional unrestricted double sx = 0);
    DOMMatrix skewYSelf(optional unrestricted double sy = 0);
    DOMMatrix invertSelf();
};
