javauis/m2g_qt/javasrc/org/w3c/dom/svg/SVGMatrix.java
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
parent 56 abc41079b313
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     1
/*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     3
* All rights reserved.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     8
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    11
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    12
* Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    13
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    14
* Description:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    15
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    16
*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    17
package org.w3c.dom.svg;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    18
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    19
import org.w3c.dom.svg.SVGException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    20
import org.w3c.dom.DOMException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    21
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    22
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    23
 * This interface represents an "SVGMatrix" datatype, identified by an affine transform.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    24
 * It can be used to read and modify the values of transform attribute as per SVG specification.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    25
 * Note that the mTranslate, mMultiply, mScale and mRotate methods in this interface
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    26
 * mutate the SVGMatrix object and return a reference to the SVGMatrix instance itself, after
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    27
 * performing the necessary matrix operation.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    28
 * <p>This matrix transforms source coordinates (x, y) into destination coordinates (x', y') by
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    29
 * considering them to be a column vector and multiplying the coordinate vector by the matrix
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    30
 * according to the following process:</p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    31
 *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    32
 * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    33
 * <pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    34
 *  [ x' ]    [  a  c  e  ]   [ x ]    [ a.x + c.y + e ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    35
 *  [ y' ] =  [  b  d  f  ]   [ y ] =  [ b.x + d.y + f ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    36
 *  [ 1  ]    [  0  0  1  ]   [ 1 ]    [        1      ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    37
 * </pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    38
 * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    39
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    40
public interface SVGMatrix
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    41
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    42
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    43
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    44
     * Returns a component of the matrix by component's zero-based index. <code>getComponent(0)</code> is a, <code>getComponent(1)</code> is b, etc.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    45
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    46
     * @param index the index of the matrix component to retrieve.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    47
     * @return the component for the specified index.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    48
     * @throws DOMException  - INDEX_SIZE_ERR if the <code>index</code> is invalid.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    49
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    50
    public float getComponent(int index)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    51
    throws DOMException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    52
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    53
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    54
     * Performs matrix multiplication. This matrix is post-multiplied by another matrix, returning the resulting current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    55
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    56
     * @param secondMatrix the matrix to post-multiply with.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    57
     * @return the resulting current matrix after post-multiplication.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    58
     * @throws NullPointerException  - if secondMatrix is null.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    59
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    60
    public SVGMatrix mMultiply(SVGMatrix secondMatrix);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    61
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    62
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    63
     * Returns a new instance of SVGMatrix containing the inverse of the current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    64
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    65
     * @return the inverse of the current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    66
     * @throws SVGException  - SVG_MATRIX_NOT_INVERTABLE when determinant of this matrix is zero.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    67
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    68
    public SVGMatrix inverse()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    69
    throws SVGException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    70
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    71
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    72
     * Post-multiplies a translation transformation on the current matrix and returns the resulting current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    73
     * This is equivalent to calling <code>multiply(T)</code>, where <code>T</code> is an
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    74
     * <code>SVGMatrix</code> object represented by the following
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    75
     * matrix:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    76
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    77
     * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    78
     * <pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    79
     *      [   1    0    x  ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    80
     *      [   0    1    y  ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    81
     *      [   0    0    1   ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    82
     * </pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    83
     * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    84
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    85
     * @param x the distance by which coordinates are translated
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    86
     * in the X axis direction.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    87
     * @param y the distance by which coordinates are translated
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    88
     * in the Y axis direction.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    89
     * @return the resulting current matrix after post-multiplication.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    90
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    91
    public SVGMatrix mTranslate(float x, float y);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    92
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    93
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    94
     * Post-multiplies a uniform scale transformation on the current matrix and returns the resulting current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    95
     * This is equivalent to calling <code>multiply(S)</code>, where <code>S</code> is an <code>SVGMatrix</code>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    96
     * object represented by the following matrix:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    97
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    98
     * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    99
     * <pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   100
     *      [   scaleFactor      0          0   ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   101
     *      [   0          scaleFactor      0   ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   102
     *      [   0                0          1   ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   103
     * </pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   104
     * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   105
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   106
     * @param scaleFactor the factor by which coordinates are scaled along the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   107
     * X and Y axis.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   108
     * @return the resulting current matrix after post-mutiplication.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   109
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   110
    public SVGMatrix mScale(float scaleFactor);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   111
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   112
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   113
     * Post-multiplies a rotation transformation on the current matrix and returns the resulting current matrix.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   114
     * This is equivalent to calling <code>multiply(R)</code>, where <code>R</code> is an
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   115
     * <code>SVGMatrix</code> object represented by the following matrix:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   116
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   117
     * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   118
     * <pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   119
     *      [ cos(angle) -sin(angle) 0 ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   120
     *      [ sin(angle)  cos(angle) 0 ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   121
     *      [ 0           0          1 ]
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   122
     * </pre>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   123
     * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   124
     *
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   125
     * @param angle the angle of rotation in degrees.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   126
     * @return the resulting current matrix after post-multiplication.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   127
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   128
    public SVGMatrix mRotate(float angle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   129
}