Class CTM

  • All Implemented Interfaces:
    java.io.Serializable

    public class CTM
    extends java.lang.Object
    implements java.io.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
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double a  
      private double b  
      private double c  
      private static CTM CTM_LRTB  
      private static CTM CTM_RLTB  
      private static CTM CTM_TBRL  
      private double d  
      private double e  
      private double f  
      private static long serialVersionUID  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        CTM()
      Create the identity matrix
        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.
        CTM​(java.awt.geom.AffineTransform at)
      Initialize a CTM with the values of an AffineTransform.
      protected CTM​(CTM ctm)
      Initialize a CTM with the values of another CTM.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static CTM getCTMandRelDims​(int absRefOrient, WritingMode writingMode, java.awt.geom.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.
      java.awt.geom.AffineTransform toAffineTransform()
      Returns this CTM as an AffineTransform object.
      double[] toArray()
      Get an array containing the values of this transform.
      java.lang.String toString()
      Get string for this transform.
      java.awt.geom.Rectangle2D transform​(java.awt.geom.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
    • Field Detail

      • a

        private double a
      • b

        private double b
      • c

        private double c
      • d

        private double d
      • e

        private double e
      • f

        private double f
      • CTM_LRTB

        private static final CTM CTM_LRTB
      • CTM_RLTB

        private static final CTM CTM_RLTB
      • CTM_TBRL

        private static final CTM CTM_TBRL
    • 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​(java.awt.geom.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 java.awt.geom.Rectangle2D transform​(java.awt.geom.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 java.lang.String toString()
        Get string for this transform.
        Overrides:
        toString in class java.lang.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 java.awt.geom.AffineTransform toAffineTransform()
        Returns this CTM as an AffineTransform object.
        Returns:
        the AffineTransform representation
      • getCTMandRelDims

        public static CTM getCTMandRelDims​(int absRefOrient,
                                           WritingMode writingMode,
                                           java.awt.geom.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)