Module Pdftransform

module Pdftransform: sig .. end
Affine Transformations in Two Dimensions


Types


type transform_op = 
| Scale of (float * float) * float * float
| Rotate of (float * float) * float
| Translate of float * float
| ShearX of (float * float) * float
| ShearY of (float * float) * float
A single transformation operation.
type transform = transform_op list 
A list of transformations, the first at the end of the list (thus, to append another transformation, just cons to the beginning.)
type transform_matrix = {
   a : float;
   b : float;
   c : float;
   d : float;
   e : float;
   f : float;
}
A transformation matrix (first row a c e, second row b d f, third row 0 0 1)
val i : transform
The identity transform
val string_of_transform : transform -> string
Make a string of a transform for debug purposes.

Making transformation matrices


val i_matrix : transform_matrix
The identity matrix
val string_of_matrix : transform_matrix -> string
String of a transformation matrix.
val mktranslate : float -> float -> transform_matrix
Make a transformation matrix from x and y translation.
val mkscale : float * float -> float -> float -> transform_matrix
Make a transformation matrix from an x and y scale and a point to scale about.
val mkrotate : float * float -> float -> transform_matrix
Make a rotation matrix to rotate by a number of radians around a point.
val mkshearx : float * float -> float -> transform_matrix
Matrix to shear in x by a given factor about a point.
val mksheary : float * float -> float -> transform_matrix
Matrix to shear in y by a given factor about a point.

Composing and manipulating transforms


val compose : transform_op -> transform -> transform
compose t ts adds operation t to the transform ts.
val append : transform -> transform -> transform
append a b is a transform with the same effect as performing b then a
val matrix_compose : transform_matrix ->
transform_matrix -> transform_matrix
compose a b produces a matrix equivalent to performing b then a.
val matrix_of_op : transform_op -> transform_matrix
Make a matrix from a single transformation operation
val matrix_of_transform : transform -> transform_matrix
Make a matrix from a transform

Inverting transforms


exception NonInvertable
Exception raised if a matrix is non-invertable
val matrix_invert : transform_matrix -> transform_matrix
Matrix inversion. May raise NonInvertable
val transform : transform -> float * float -> float * float
Transform a coordinate by a given transform.
val transform_matrix : transform_matrix -> float * float -> float * float
Transform a coordinate by a given transformation matrix.

Decomposing and recomposing matrices


val decompose : transform_matrix ->
float * float * float * float * float * float
Decompose a transformation matrix to scale, aspect, rotation, shear, translation in x, translation in y. Always succeeds, but results are not guaranteed to mean anything.
val recompose : float ->
float -> float -> float -> float -> float -> transform_matrix
Recompose from the above information. It is not guaranteed that recompose (decompose t) = t