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
    Modifier | Constructor and Description
    --- | ---
    `` | `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
    Modifier and Type | Method and Description
    --- | ---
    `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)

Copyright © 2025 Apache Software Foundation. All rights reserved.