/*
* $Id: fcmatrix.fncs,v 1.3 2005/06/28 01:01:03 alanc Exp $
*
* Copyright © 2003 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
@FUNC@ FcMatrixInit
@PURPOSE@ initialize an FcMatrix structure
@TYPE1@ FcMatrix *
@ARG1@ matrix
@DESC@
FcMatrixInit initializes matrix
to the identity matrix.
@@
@FUNC@ FcMatrixCopy
@PURPOSE@ Copy a matrix
@TYPE1@ const FcMatrix *
@ARG1@ matrix
@DESC@
FcMatrixCopy allocates a new FcMatrix
and copies mat into it.
@@
@FUNC@ FcMatrixEqual
@PURPOSE@ Compare two matrices
@TYPE1@ const FcMatrix *
@ARG1@ matrix1
@TYPE2@ const FcMatrix *
@ARG2@ matrix2
@DESC@
FcMatrixEqual compares matrix1
and matrix2 returning FcTrue when they are equal and
FcFalse when they are not.
@@
@FUNC@ FcMatrixMultiply
@PURPOSE@ Multiply matrices
@TYPE1@ FcMatrix *
@ARG1@ result
@TYPE2@ const FcMatrix *
@ARG2@ matrix1
@TYPE3@ const FcMatrix *
@ARG3@ matrix2
@DESC@
FcMatrixMultiply multiplies
matrix1 and matrix2 storing
the result in result.
@@
@FUNC@ FcMatrixRotate
@PURPOSE@ Rotate a matrix
@TYPE1@ FcMatrix *
@ARG1@ matrix
@TYPE2@ double
@ARG2@ cos
@TYPE3@ double
@ARG3@ sin
@DESC@
FcMatrixRotate rotates matrix
by the angle who's sine is sin and cosine is
cos. This is done by multiplying by the
matrix:
cos -sin
sin cos
@@
@FUNC@ FcMatrixScale
@PURPOSE@ Scale a matrix
@TYPE1@ FcMatrix *
@ARG1@ matrix
@TYPE2@ double
@ARG2@ sx
@TYPE3@ double
@ARG3@ dy
@DESC@
FcMatrixScale multiplies matrix
x values by sx and y values by
sy. This is done by multiplying by
the matrix:
sx 0
0 sy
@@
@FUNC@ FcMatrixShear
@PURPOSE@ Shear a matrix
@TYPE1@ FcMatrix *
@ARG1@ matrix
@TYPE2@ double
@ARG2@ sh
@TYPE3@ double
@ARG3@ sv
@DESC@
FcMatrixShare shears matrix
horizontally by sh and vertically by
sv. This is done by multiplying by
the matrix:
1 sh
sv 1
@@