Home | History | Annotate | Download | only in css
      1 /*
      2  * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 // Introduced in DOM Level ?:
     27 [
     28     Constructor(optional DOMString cssValue = null),
     29     ImplementedAs=CSSMatrix,
     30     RaisesException=Constructor,
     31     WillBeGarbageCollected
     32 ] interface WebKitCSSMatrix {
     33 
     34     // These attributes are simple aliases for certain elements of the 4x4 matrix
     35     attribute double a; // alias for m11
     36     attribute double b; // alias for m12
     37     attribute double c; // alias for m21
     38     attribute double d; // alias for m22
     39     attribute double e; // alias for m41
     40     attribute double f; // alias for m42
     41 
     42     attribute double m11;
     43     attribute double m12;
     44     attribute double m13;
     45     attribute double m14;
     46     attribute double m21;
     47     attribute double m22;
     48     attribute double m23;
     49     attribute double m24;
     50     attribute double m31;
     51     attribute double m32;
     52     attribute double m33;
     53     attribute double m34;
     54     attribute double m41;
     55     attribute double m42;
     56     attribute double m43;
     57     attribute double m44;
     58 
     59     [RaisesException] void setMatrixValue([Default=Undefined] optional DOMString string);
     60 
     61     // Multiply this matrix by secondMatrix, on the right (result = this * secondMatrix)
     62     [Immutable] WebKitCSSMatrix multiply([Default=Undefined] optional WebKitCSSMatrix secondMatrix);
     63 
     64     // Return the inverse of this matrix. Throw an exception if the matrix is not invertible
     65     [Immutable, RaisesException] WebKitCSSMatrix inverse();
     66 
     67     // Return this matrix translated by the passed values.
     68     // Passing a NaN will use a value of 0. This allows the 3D form to used for 2D operations
     69     [Immutable] WebKitCSSMatrix translate([Default=Undefined] optional double x,
     70                                           [Default=Undefined] optional double y,
     71                                           [Default=Undefined] optional double z);
     72 
     73     // Returns this matrix scaled by the passed values.
     74     // Passing scaleX or scaleZ as NaN uses a value of 1, but passing scaleY of NaN
     75     // makes it the same as scaleX. This allows the 3D form to used for 2D operations
     76     [Immutable] WebKitCSSMatrix scale([Default=Undefined] optional double scaleX,
     77                                       [Default=Undefined] optional double scaleY,
     78                                       [Default=Undefined] optional double scaleZ);
     79 
     80     // Returns this matrix rotated by the passed values.
     81     // If rotY and rotZ are NaN, rotate about Z (rotX=0, rotateY=0, rotateZ=rotX).
     82     // Otherwise use a rotation value of 0 for any passed NaN.
     83     [Immutable] WebKitCSSMatrix rotate([Default=Undefined] optional double rotX,
     84                                        [Default=Undefined] optional double rotY,
     85                                        [Default=Undefined] optional double rotZ);
     86 
     87     // Returns this matrix rotated about the passed axis by the passed angle.
     88     // Passing a NaN will use a value of 0. If the axis is (0,0,0) use a value
     89     // of (0,0,1).
     90     [Immutable] WebKitCSSMatrix rotateAxisAngle([Default=Undefined] optional double x,
     91                                                 [Default=Undefined] optional double y,
     92                                                 [Default=Undefined] optional double z,
     93                                                 [Default=Undefined] optional double angle);
     94 
     95     // Returns this matrix skewed along the X axis by the passed values.
     96     // Passing a NaN will use a value of 0.
     97     [Immutable] WebKitCSSMatrix skewX([Default=Undefined] optional double angle);
     98 
     99     // Returns this matrix skewed along the Y axis by the passed values.
    100     // Passing a NaN will use a value of 0.
    101     [Immutable] WebKitCSSMatrix skewY([Default=Undefined] optional double angle);
    102 
    103     [NotEnumerable] DOMString toString();
    104 };
    105 
    106