org.apache.fop.area

Class CTM

Implemented Interfaces:
Serializable

public class CTM
extends java.lang.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.

Constructor Summary

CTM()
Create the identity matrix
CTM(AffineTransform at)
Initialize a CTM with the values of an AffineTransform.
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(CTM ctm)
Initialize a CTM with the values of another CTM.

Method Summary

static CTM
getCTMandRelDims(int absRefOrient, int writingMode, Rectangle2D absVPrect, FODimension reldims)
Construct a coordinate transformation matrix (CTM).
static CTM
getWMctm(int 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.

Constructor Details

CTM

public CTM()
Create the identity matrix

CTM

public CTM(AffineTransform at)
Initialize a CTM with the values of an AffineTransform.
Parameters:
at - the transformation matrix

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

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

protected CTM(CTM ctm)
Initialize a CTM with the values of another CTM.
Parameters:
ctm - another CTM

Method Details

getCTMandRelDims

public static CTM getCTMandRelDims(int absRefOrient,
                                   int 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)

getWMctm

public static CTM getWMctm(int 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.
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.

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.

toAffineTransform

public AffineTransform toAffineTransform()
Returns this CTM as an AffineTransform object.
Returns:
the AffineTransform representation

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

toString

public String toString()
Get string for this transform.
Returns:
a string with the transform values

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.

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.

Copyright 1999-2008 The Apache Software Foundation. All Rights Reserved.