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([Default=NullString] optional DOMString cssValue),
     29     ImplementedAs=CSSMatrix,
     30     ConstructorRaisesException
     31 ] interface WebKitCSSMatrix {
     32 
     33     // These attributes are simple aliases for certain elements of the 4x4 matrix
     34     attribute double a; // alias for m11
     35     attribute double b; // alias for m12
     36     attribute double c; // alias for m21
     37     attribute double d; // alias for m22
     38     attribute double e; // alias for m41
     39     attribute double f; // alias for m42
     40 
     41     attribute double m11;
     42     attribute double m12;
     43     attribute double m13;
     44     attribute double m14;
     45     attribute double m21;
     46     attribute double m22;
     47     attribute double m23;
     48     attribute double m24;
     49     attribute double m31;
     50     attribute double m32;
     51     attribute double m33;
     52     attribute double m34;
     53     attribute double m41;
     54     attribute double m42;
     55     attribute double m43;
     56     attribute double m44;
     57 
     58     [RaisesException] void setMatrixValue([Default=Undefined] optional DOMString string);
     59 
     60     // Multiply this matrix by secondMatrix, on the right (result = this * secondMatrix)
     61     [Immutable] WebKitCSSMatrix multiply([Default=Undefined] optional WebKitCSSMatrix secondMatrix);
     62 
     63     // Return the inverse of this matrix. Throw an exception if the matrix is not invertible
     64     [Immutable, RaisesException] WebKitCSSMatrix inverse();
     65 
     66     // Return this matrix translated by the passed values.
     67     // Passing a NaN will use a value of 0. This allows the 3D form to used for 2D operations
     68     [Immutable] WebKitCSSMatrix translate([Default=Undefined] optional double x,
     69                                           [Default=Undefined] optional double y,
     70                                           [Default=Undefined] optional double z);
     71 
     72     // Returns this matrix scaled by the passed values.
     73     // Passing scaleX or scaleZ as NaN uses a value of 1, but passing scaleY of NaN
     74     // makes it the same as scaleX. This allows the 3D form to used for 2D operations
     75     [Immutable] WebKitCSSMatrix scale([Default=Undefined] optional double scaleX,
     76                                       [Default=Undefined] optional double scaleY,
     77                                       [Default=Undefined] optional double scaleZ);
     78 
     79     // Returns this matrix rotated by the passed values.
     80     // If rotY and rotZ are NaN, rotate about Z (rotX=0, rotateY=0, rotateZ=rotX).
     81     // Otherwise use a rotation value of 0 for any passed NaN.
     82     [Immutable] WebKitCSSMatrix rotate([Default=Undefined] optional double rotX,
     83                                        [Default=Undefined] optional double rotY,
     84                                        [Default=Undefined] optional double rotZ);
     85 
     86     // Returns this matrix rotated about the passed axis by the passed angle.
     87     // Passing a NaN will use a value of 0. If the axis is (0,0,0) use a value
     88     // of (0,0,1).
     89     [Immutable] WebKitCSSMatrix rotateAxisAngle([Default=Undefined] optional double x,
     90                                                 [Default=Undefined] optional double y,
     91                                                 [Default=Undefined] optional double z,
     92                                                 [Default=Undefined] optional double angle);
     93 
     94     // Returns this matrix skewed along the X axis by the passed values.
     95     // Passing a NaN will use a value of 0.
     96     [Immutable] WebKitCSSMatrix skewX([Default=Undefined] optional double angle);
     97 
     98     // Returns this matrix skewed along the Y axis by the passed values.
     99     // Passing a NaN will use a value of 0.
    100     [Immutable] WebKitCSSMatrix skewY([Default=Undefined] optional double angle);
    101 
    102     [NotEnumerable] DOMString toString();
    103 };
    104 
    105