Manipulating the current transformation matrix

The current transformation matrix, ctm, is a two-dimensional affine transformation that maps all coordinates and other drawing instruments from the user space into the surface's canonical coordinate system, also known as the device space.

— Function: **cairo-translate** (`cr ``tx ``ty `

`<cairo-t>`

) (`<double>`

) (`<double>`

)Modifies the current transformation matrix (CTM) by translating the user-space origin by (

tx,ty). This offset is interpreted as a user-space coordinate according to the CTM in place before the new call to`cairo-translate`

. In other words, the translation of the user-space origin takes place after any existing transformation.

cr- a cairo context
tx- amount to translate in the X direction
ty- amount to translate in the Y direction

— Function: **cairo-scale** (`cr ``sx ``sy `

`<cairo-t>`

) (`<double>`

) (`<double>`

)Modifies the current transformation matrix (CTM) by scaling the X and Y user-space axes by

sxandsyrespectively. The scaling of the axes takes place after any existing transformation of user space.

cr- a cairo context
sx- scale factor for the X dimension
sy- scale factor for the Y dimension

— Function: **cairo-rotate** (`cr ``angle `

`<cairo-t>`

) (`<double>`

)Modifies the current transformation matrix (CTM) by rotating the user-space axes by

angleradians. The rotation of the axes takes places after any existing transformation of user space. The rotation direction for positive angles is from the positive X axis toward the positive Y axis.

cr- a cairo context
angle- angle (in radians) by which the user-space axes will be rotated

— Function: **cairo-transform** (`cr ``matrix `

`<cairo-t>`

) (`<cairo-matrix-t>`

)Modifies the current transformation matrix (CTM) by applying

matrixas an additional transformation. The new transformation of user space takes place after any existing transformation.

cr- a cairo context
matrix- a transformation to be applied to the user-space axes

— Function: **cairo-set-matrix** (`cr ``matrix `

`<cairo-t>`

) (`<cairo-matrix-t>`

)Modifies the current transformation matrix (CTM) by setting it equal to

matrix.

cr- a cairo context
matrix- a transformation matrix from user space to device space

— Function: **cairo-get-matrix** (`cr ``matrix `

`<cairo-t>`

) (`<cairo-matrix-t>`

)Stores the current transformation matrix (CTM) into

matrix.

cr- a cairo context
matrix- return value for the matrix

— Function: **cairo-identity-matrix** (`cr `

`<cairo-t>`

)Resets the current transformation matrix (CTM) by setting it equal to the identity matrix. That is, the user-space and device-space axes will be aligned and one user-space unit will transform to one device-space unit.

cr- a cairo context

— Function: **cairo-user-to-device** (`cr `` ⇒ `(`x ``y `

`<cairo-t>`

)`<double>`

) (`<double>`

)Transform a coordinate from user space to device space by multiplying the given point by the current transformation matrix (CTM).

cr- a cairo context
x- X value of coordinate (in/out parameter)
y- Y value of coordinate (in/out parameter)

— Function: **cairo-user-to-device-distance** (`cr `` ⇒ `(`dx ``dy `

`<cairo-t>`

)`<double>`

) (`<double>`

)Transform a distance vector from user space to device space. This function is similar to

`cairo-user-to-device`

except that the translation components of the CTM will be ignored when transforming (dx,dy).

cr- a cairo context
dx- X component of a distance vector (in/out parameter)
dy- Y component of a distance vector (in/out parameter)

— Function: **cairo-device-to-user** (`cr `` ⇒ `(`x ``y `

`<cairo-t>`

)`<double>`

) (`<double>`

)Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current transformation matrix (CTM).

cr- a cairo
x- X value of coordinate (in/out parameter)
y- Y value of coordinate (in/out parameter)

— Function: **cairo-device-to-user-distance** (`cr `` ⇒ `(`dx ``dy `

`<cairo-t>`

)`<double>`

) (`<double>`

)Transform a distance vector from device space to user space. This function is similar to

`cairo-device-to-user`

except that the translation components of the inverse CTM will be ignored when transforming (dx,dy).

cr- a cairo context
dx- X component of a distance vector (in/out parameter)
dy- Y component of a distance vector (in/out parameter)