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