cairoLib.Matrix.Matrix Class Reference

List of all members.

Detailed Description

Description cairo_matrix_t is used throughout cairo to convert between different coordinate spaces.

A cairo_matrix_t holds an affine transformation, such as a scale, rotation, shear, or a combination of these. The transformation of a point (x,y) is given by: x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; The current transformation matrix of a cairo_t, represented as a cairo_matrix_t, defines the transformation from user-space coordinates to device-space coordinates. See cairo_get_matrix() and cairo_set_matrix().


Public Member Functions

cairo_matrix_tgetMatrixStruct ()
 this (cairo_matrix_t *cairo_matrix)
 Sets our main struct and passes it to the parent class.
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.
void initIdentity ()
 Modifies matrix to be an identity transformation.
void initTranslate (double tx, double ty)
 Initializes matrix to a transformation that translates by tx and ty in the X and Y dimensions, respectively.
void initScale (double sx, double sy)
 Initializes matrix to a transformation that scales by sx and sy in the X and Y dimensions, respectively.
void initRotate (double radians)
 Initialized matrix to a transformation that rotates by radians.
void translate (double tx, double ty)
 Applies a translation by tx, ty to the transformation in matrix.
void scale (double sx, double sy)
 Applies scaling by tx, ty to the transformation in matrix.
void rotate (double radians)
 Applies rotation by radians to the transformation in matrix.
cairo_status_t invert ()
 Changes matrix to be the inverse of it's original value.
void multiply (cairo_matrix_t *a, cairo_matrix_t *b)
 Multiplies the affine transformations in a and b together and stores the result in result.
void transformDistance (double *dx, double *dy)
 Transforms the distance vector (dx,dy) by matrix.
void transformPoint (double *x, double *y)
 Transforms the point (x, y) by matrix.

Protected Member Functions

void * getStruct ()
 the main Gtk struct as a void*

Protected Attributes

cairo_matrix_tcairo_matrix
 the main Gtk struct


Constructor & Destructor Documentation

cairoLib.Matrix.Matrix.this ( cairo_matrix_t cairo_matrix  ) 

Sets our main struct and passes it to the parent class.


Member Function Documentation

cairo_matrix_t* cairoLib.Matrix.Matrix.getMatrixStruct (  ) 

void* cairoLib.Matrix.Matrix.getStruct (  )  [protected]

the main Gtk struct as a void*

void cairoLib.Matrix.Matrix.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: x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; matrix: a cairo_matrix_t xx: xx component of the affine transformation yx: yx component of the affine transformation xy: xy component of the affine transformation yy: yy component of the affine transformation x0: X translation component of the affine transformation y0: Y translation component of the affine transformation

void cairoLib.Matrix.Matrix.initIdentity (  ) 

Modifies matrix to be an identity transformation.

matrix: a cairo_matrix_t

void cairoLib.Matrix.Matrix.initRotate ( double  radians  ) 

Initialized matrix to a transformation that rotates by radians.

matrix: a cairo_matrix_t radians: angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise direction.

void cairoLib.Matrix.Matrix.initScale ( double  sx,
double  sy 
)

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

matrix: a cairo_matrix_t sx: scale factor in the X direction sy: scale factor in the Y direction

void cairoLib.Matrix.Matrix.initTranslate ( double  tx,
double  ty 
)

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

matrix: a cairo_matrix_t tx: amount to translate in the X direction ty: amount to translate in the Y direction

cairo_status_t cairoLib.Matrix.Matrix.invert (  ) 

Changes matrix to be the inverse of it's original value.

Not all transformation matrices have inverses; if the matrix collapses points together (it is degenerate), then it has no inverse and this function will fail. Returns: If matrix has an inverse, modifies matrix to be the inverse matrix and returns CAIRO_STATUS_SUCCESS. Otherwise, matrix: a cairo_matrix_t Returns: CAIRO_STATUS_INVALID_MATRIX.

void cairoLib.Matrix.Matrix.multiply ( cairo_matrix_t a,
cairo_matrix_t 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. It is allowable for result to be identical to either a or b. result: a cairo_matrix_t in which to store the result a: a cairo_matrix_t b: a cairo_matrix_t

void cairoLib.Matrix.Matrix.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. matrix: a cairo_matrix_t radians: angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise direction.

void cairoLib.Matrix.Matrix.scale ( double  sx,
double  sy 
)

Applies scaling by tx, ty 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. matrix: a cairo_matrix_t sx: scale factor in the X direction sy: scale factor in the Y direction

void cairoLib.Matrix.Matrix.transformDistance ( double *  dx,
double *  dy 
)

Transforms the distance vector (dx,dy) by matrix.

This is similar to cairo_matrix_transform_point() except that the translation components of the transformation are ignored. The calculation of the returned vector is as follows: dx2 = dx1 * a + dy1 * c; dy2 = dx1 * b + dy1 * d; Affine transformations are position invariant, so the same vector always transforms to the same vector. If (x1,y1) transforms to (x2,y2) then (x1+dx1,y1+dy1) will transform to (x1+dx2,y1+dy2) for all values of x1 and x2. matrix: a cairo_matrix_t dx: X component of a distance vector. An in/out parameter dy: Y component of a distance vector. An in/out parameter

void cairoLib.Matrix.Matrix.transformPoint ( double *  x,
double *  y 
)

Transforms the point (x, y) by matrix.

matrix: a cairo_matrix_t x: X position. An in/out parameter y: Y position. An in/out parameter

void cairoLib.Matrix.Matrix.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. matrix: a cairo_matrix_t tx: amount to translate in the X direction ty: amount to translate in the Y direction


Member Data Documentation

cairo_matrix_t* cairoLib.Matrix.Matrix.cairo_matrix [protected]

the main Gtk struct


SourceForge.net Logo DSource.org Logo digitalmars.com Logo