# 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`.

 `void setXX (TItem x)` Sets `xx` component. `void setXY (TItem x)` Sets `xy` component. `void setYX (TItem x)` Sets `yx` component. `void setYY (TItem x)` Sets `yy` component. `void setDX (TItem x)` Sets `dx` component. `void setDY (TItem x)` Sets `dy` component.

# Matrix values

Matrix values and their effects are shown below: 