Matrix

A #cairo_matrix_t holds an affine transformation, such as a scale, rotation, shear, or a combination of those. The transformation of a point (x, y) is given by: <programlisting> x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; </programlisting>

Members

Functions

initIdentity
void initIdentity()

Modifies matrix to be an identity transformation.

initRotate
void initRotate(double radians)

Initialized matrix to a transformation that rotates by radians.

initScale
void initScale(double sx, double sy)

Initializes matrix to a transformation that scales by sx and sy in the X and Y dimensions, respectively.

initTranslate
void initTranslate(double tx, double ty)

Initializes matrix to a transformation that translates by tx and ty in the X and Y dimensions, respectively.

init_
void init_(double xx, double yx, double xy, double yy, double x0, double y0)

Sets matrix to be the affine transformation given by xx, yx, xy, yy, x0, y0. The transformation is given by: <programlisting> x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; </programlisting>

invert
cairo.types.Status invert()

Changes matrix to be the inverse of its original value. Not all transformation matrices have inverses; if the matrix collapses points together (it is <firstterm>degenerate</firstterm>), then it has no inverse and this function will fail.

multiply
void multiply(cairo.matrix.Matrix a, cairo.matrix.Matrix b)

Multiplies the affine transformations in a and b together and stores the result in result. The effect of the resulting transformation is to first apply the transformation in a to the coordinates and then apply the transformation in b to the coordinates.

rotate
void rotate(double radians)

Applies rotation by radians to the transformation in matrix. The effect of the new transformation is to first rotate the coordinates by radians, then apply the original transformation to the coordinates.

scale
void scale(double sx, double sy)

Applies scaling by sx, sy to the transformation in matrix. The effect of the new transformation is to first scale the coordinates by sx and sy, then apply the original transformation to the coordinates.

transformDistance
void transformDistance(double dx, double dy)

Transforms the distance vector (dx,dy) by matrix. This is similar to cairo.matrix.Matrix.transformPoint except that the translation components of the transformation are ignored. The calculation of the returned vector is as follows:

transformPoint
void transformPoint(double x, double y)

Transforms the point (x, y) by matrix.

translate
void translate(double tx, double ty)

Applies a translation by tx, ty to the transformation in matrix. The effect of the new transformation is to first translate the coordinates by tx and ty, then apply the original transformation to the coordinates.

Properties

_gType
GType _gType [@property getter]

Static functions

_getGType
GType _getGType()

Variables

x0
double x0;

X translation component of the affine transformation

xx
double xx;

xx component of the affine transformation

xy
double xy;

xy component of the affine transformation

y0
double y0;

Y translation component of the affine transformation

yx
double yx;

yx component of the affine transformation

yy
double yy;

yy component of the affine transformation