# FMatrix and transforms

## Introduction

Objects on a PDF page get their size and position from a transformation matrix that is the sum of its own and those of the chain of parent nodes, up to the page root. These transformations are expressed in the form of a matrix. In Mako you can create matrices and apply them to objects to move, resize, or rotate content.

When you need to move, resize, or rotate content, you create an `FMatrix`

and apply it with `.setRenderTransform()`

.

## Creating an FMatrix

The `FMatrix`

constructor can be used in three different ways:

1. | `FMatrix()` | Default. Use this to create a default matrix, then use the following methods to change individual values. |

2. | `FMatrix(double xx, double xy, double yx, double yy, double dx, double dy);` | Specifies the full range of values. |

3. | `FMatrix(FRect sourceRect, FRect destRect);` | This is a very useful constructor. It calculates a matrix for you based on source and destination rectangles, each expressed as an `FRect` (`x,y` origin and `dX` , `dY` dimensions). |

The values (`xx`

, `xy`

, `yx`

, `yy`

, `dx`

, and `dy`

) are described below.

### Setting values individually

The API documentation refers to a `TItem`

, which is defined (via a typedef) as a `double`

.

| Sets |

| Sets |

| Sets |

| Sets |

| Sets |

| Sets |

## Matrix values

Matrix values and their effects are shown below: