org.apache.fop.area

## Class CTM

- java.lang.Object
- - org.apache.fop.area.CTM

All Implemented Interfaces:
  Serializable

    public class CTM
    extends Object
    implements Serializable

Describe a PDF or PostScript style coordinate transformation matrix (CTM). The matrix encodes translations, scaling and rotations of the coordinate system used to render pages.

See Also:
  Serialized Form

### Constructor Summary

Constructors
`` `CTM()` Create the identity matrix
`` `CTM(AffineTransform at)` Initialize a CTM with the values of an AffineTransform.
`protected` `CTM(CTM ctm)` Initialize a CTM with the values of another CTM.
`` `CTM(double x, double y)` Initialize a CTM to the identity matrix with a translation specified by x and y
`` `CTM(double a, double b, double c, double d, double e, double f)` Initialize a CTM from the passed arguments.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static CTM` `getCTMandRelDims(int absRefOrient, WritingMode writingMode, Rectangle2D absVPrect, FODimension reldims)` Construct a coordinate transformation matrix (CTM).
`static CTM` `getWMctm(WritingMode wm, int ipd, int bpd)` Return a CTM which will transform coordinates for a particular writing-mode into normalized first quandrant coordinates.
`CTM` `multiply(CTM premult)` Multiply new passed CTM with this one and generate a new result CTM.
`CTM` `rotate(double angle)` Rotate this CTM by "angle" radians and return a new result CTM.
`CTM` `scale(double x, double y)` Scale this CTM by the passed x and y values and return a new result CTM.
`AffineTransform` `toAffineTransform()` Returns this CTM as an AffineTransform object.
`double[]` `toArray()` Get an array containing the values of this transform.
`String` `toString()` Get string for this transform.
`Rectangle2D` `transform(Rectangle2D inRect)` Transform a rectangle by the CTM to produce a rectangle in the transformed coordinate system.
`CTM` `translate(double x, double y)` Translate this CTM by the passed x and y values and return a new result CTM.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### CTM

    public CTM()

Create the identity matrix

#### CTM

    public CTM(double a,
               double b,
               double c,
               double d,
               double e,
               double f)

Initialize a CTM from the passed arguments.

Parameters:
  `a` - the x scale
  `b` - the x shear
  `c` - the y shear
  `d` - the y scale
  `e` - the x shift
  `f` - the y shift

#### CTM

    public CTM(double x,
               double y)

Initialize a CTM to the identity matrix with a translation specified by x and y

Parameters:
  `x` - the x shift
  `y` - the y shift.

#### CTM

    protected CTM(CTM ctm)

Initialize a CTM with the values of another CTM.

Parameters:
  `ctm` - another CTM

#### CTM

    public CTM(AffineTransform at)

Initialize a CTM with the values of an AffineTransform.

Parameters:
  `at` - the transformation matrix

### Method Detail

#### getWMctm

    public static CTM getWMctm(WritingMode wm,
                               int ipd,
                               int bpd)

Return a CTM which will transform coordinates for a particular writing-mode into normalized first quandrant coordinates.

Parameters:
  `wm` - A writing mode constant from fo.properties.WritingMode, ie. one of LR_TB, RL_TB, TB_RL, TB_LR.
  `ipd` - The inline-progression dimension of the reference area whose CTM is being set..
  `bpd` - The block-progression dimension of the reference area whose CTM is being set.
Returns:
  a new CTM with the required transform

#### multiply

    public CTM multiply(CTM premult)

Multiply new passed CTM with this one and generate a new result CTM.

Parameters:
  `premult` - The CTM to multiply with this one. The new one will be the first multiplicand.
Returns:
  CTM The result of multiplying premult * this.

#### rotate

    public CTM rotate(double angle)

Rotate this CTM by "angle" radians and return a new result CTM. This is used to account for reference-orientation.

Parameters:
  `angle` - The angle in radians. Positive angles are measured counter- clockwise.
Returns:
  CTM The result of rotating this CTM.

#### translate

    public CTM translate(double x,
                         double y)

Translate this CTM by the passed x and y values and return a new result CTM.

Parameters:
  `x` - The amount to translate along the x axis.
  `y` - The amount to translate along the y axis.
Returns:
  CTM The result of translating this CTM.

#### scale

    public CTM scale(double x,
                     double y)

Scale this CTM by the passed x and y values and return a new result CTM.

Parameters:
  `x` - The amount to scale along the x axis.
  `y` - The amount to scale along the y axis.
Returns:
  CTM The result of scaling this CTM.

#### transform

    public Rectangle2D transform(Rectangle2D inRect)

Transform a rectangle by the CTM to produce a rectangle in the transformed coordinate system.

Parameters:
  `inRect` - The rectangle in the original coordinate system
Returns:
  Rectangle2D The rectangle in the transformed coordinate system.

#### toString

    public String toString()

Get string for this transform.

Overrides:
  `toString` in class `Object`
Returns:
  a string with the transform values

#### toArray

    public double[] toArray()

Get an array containing the values of this transform. This creates and returns a new transform with the values in it.

Returns:
  an array containing the transform values

#### toAffineTransform

    public AffineTransform toAffineTransform()

Returns this CTM as an AffineTransform object.

Returns:
  the AffineTransform representation

#### getCTMandRelDims

    public static CTM getCTMandRelDims(int absRefOrient,
                                       WritingMode writingMode,
                                       Rectangle2D absVPrect,
                                       FODimension reldims)

Construct a coordinate transformation matrix (CTM).

Parameters:
  `absRefOrient` - absolute reference orientation
  `writingMode` - the writing mode
  `absVPrect` - absolute viewpoint rectangle
  `reldims` - relative dimensions
Returns:
  CTM the coordinate transformation matrix (CTM)