Package org.apache.pdfbox.util
Class Matrix
- java.lang.Object
-
- org.apache.pdfbox.util.Matrix
-
- All Implemented Interfaces:
java.lang.Cloneable
public final class Matrix extends java.lang.Object implements java.lang.CloneableThis class will be used for matrix manipulation.
-
-
Constructor Summary
Constructors Modifier Constructor Description Matrix()Constructor.privateMatrix(float[] src)Constructor.Matrix(float a, float b, float c, float d, float e, float f)Creates a transformation matrix with the given 6 elements.Matrix(java.awt.geom.AffineTransform at)Creates a matrix with the same elements as the given AffineTransform.privateMatrix(COSArray array)Creates a matrix from a 6-element (a b c d e f) COS array.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private float[]checkFloatValues(float[] values)Matrixclone()Clones this object.voidconcatenate(Matrix matrix)Concatenates (premultiplies) the given matrix to this matrix.static Matrixconcatenate(Matrix a, Matrix b)Produces a copy of the first matrix, with the second matrix concatenated.java.awt.geom.AffineTransformcreateAffineTransform()Create an affine transform from this matrix's values.static MatrixcreateMatrix(COSBase base)Convenience method to be used when creating a matrix from unverified data.booleanequals(java.lang.Object obj)static MatrixgetRotateInstance(double theta, float tx, float ty)Convenience method to create a rotated instance.static MatrixgetScaleInstance(float x, float y)Convenience method to create a scaled instance.floatgetScaleX()Returns the x-scaling element of this matrix.floatgetScaleY()Returns the y-scaling element of this matrix.floatgetScalingFactorX()Returns the x-scaling factor of this matrix.floatgetScalingFactorY()Returns the y-scaling factor of this matrix.floatgetShearX()Returns the x-shear element of this matrix.floatgetShearY()Returns the y-shear element of this matrix.static MatrixgetTranslateInstance(float x, float y)Convenience method to create a translating instance.floatgetTranslateX()Returns the x-translation element of this matrix.floatgetTranslateY()Returns the y-translation element of this matrix.floatgetValue(int row, int column)This will get a matrix value at some point.float[][]getValues()Return a single dimension array of all values in the matrix.inthashCode()Matrixmultiply(Matrix other)This method multiplies this Matrix with the specified other Matrix, storing the product in a new instance.private float[]multiplyArrays(float[] a, float[] b)voidrotate(double theta)Rotates this matrix by the given factors.voidscale(float sx, float sy)Scales this matrix by the given factors.voidsetValue(int row, int column, float value)This will set a value at a position.COSArraytoCOSArray()Returns a COS array which represent the geometric relevant components of the matrix.java.lang.StringtoString()voidtransform(java.awt.geom.Point2D point)Transforms the given point by this matrix.Vectortransform(Vector vector)Transforms the given vector by this matrix.java.awt.geom.Point2D.FloattransformPoint(float x, float y)Transforms the given point by this matrix.voidtranslate(float tx, float ty)Translates this matrix by the given amount.voidtranslate(Vector vector)Translates this matrix by the given vector.
-
-
-
Field Detail
-
SIZE
public static final int SIZE
- See Also:
- Constant Field Values
-
single
private float[] single
-
-
Constructor Detail
-
Matrix
public Matrix()
Constructor. This produces an identity matrix.
-
Matrix
private Matrix(float[] src)
Constructor. This produces a matrix with the given array as data. The source array is not copied or cloned.
-
Matrix
private Matrix(COSArray array)
Creates a matrix from a 6-element (a b c d e f) COS array.- Parameters:
array- source array, elements must be or extend COSNumber
-
Matrix
public Matrix(float a, float b, float c, float d, float e, float f)Creates a transformation matrix with the given 6 elements. Transformation matrices are discussed in 8.3.3, "Common Transformations" and 8.3.4, "Transformation Matrices" of the PDF specification. For simple purposes (rotate, scale, translate) it is recommended to use the static methods below. Produces the following matrix: a b 0 c d 0 e f 1- Parameters:
a- the X coordinate scaling element (m00) of the 3x3 matrixb- the Y coordinate shearing element (m10) of the 3x3 matrixc- the X coordinate shearing element (m01) of the 3x3 matrixd- the Y coordinate scaling element (m11) of the 3x3 matrixe- the X coordinate translation element (m02) of the 3x3 matrixf- the Y coordinate translation element (m12) of the 3x3 matrix- See Also:
getRotateInstance(double, float, float),getScaleInstance(float, float),getTranslateInstance(float, float)
-
Matrix
public Matrix(java.awt.geom.AffineTransform at)
Creates a matrix with the same elements as the given AffineTransform.- Parameters:
at- matrix elements will be initialize with the values from this affine transformation, as follows: scaleX shearY 0 shearX scaleY 0 transX transY 1
-
-
Method Detail
-
createMatrix
public static Matrix createMatrix(COSBase base)
Convenience method to be used when creating a matrix from unverified data. If the parameter is a COSArray with at least six numbers, a Matrix object is created from the first six numbers and returned. If not, then the identity Matrix is returned.- Parameters:
base- a COS object, preferably a COSArray with six numbers.- Returns:
- a Matrix object.
-
createAffineTransform
public java.awt.geom.AffineTransform createAffineTransform()
Create an affine transform from this matrix's values.- Returns:
- An affine transform with this matrix's values.
-
getValue
public float getValue(int row, int column)This will get a matrix value at some point.- Parameters:
row- The row to get the value from.column- The column to get the value from.- Returns:
- The value at the row/column position.
-
setValue
public void setValue(int row, int column, float value)This will set a value at a position.- Parameters:
row- The row to set the value at.column- the column to set the value at.value- The value to set at the position.
-
getValues
public float[][] getValues()
Return a single dimension array of all values in the matrix.- Returns:
- The values of this matrix.
-
concatenate
public void concatenate(Matrix matrix)
Concatenates (premultiplies) the given matrix to this matrix.- Parameters:
matrix- The matrix to concatenate.
-
translate
public void translate(Vector vector)
Translates this matrix by the given vector.- Parameters:
vector- 2D vector
-
translate
public void translate(float tx, float ty)Translates this matrix by the given amount.- Parameters:
tx- x-translationty- y-translation
-
scale
public void scale(float sx, float sy)Scales this matrix by the given factors.- Parameters:
sx- x-scalesy- y-scale
-
rotate
public void rotate(double theta)
Rotates this matrix by the given factors.- Parameters:
theta- The angle of rotation measured in radians
-
multiply
public Matrix multiply(Matrix other)
This method multiplies this Matrix with the specified other Matrix, storing the product in a new instance. It is allowed to have (other == this).- Parameters:
other- the second operand Matrix in the multiplication; required- Returns:
- the product of the two matrices.
-
checkFloatValues
private float[] checkFloatValues(float[] values)
-
multiplyArrays
private float[] multiplyArrays(float[] a, float[] b)
-
transform
public void transform(java.awt.geom.Point2D point)
Transforms the given point by this matrix.- Parameters:
point- point to transform
-
transformPoint
public java.awt.geom.Point2D.Float transformPoint(float x, float y)Transforms the given point by this matrix.- Parameters:
x- x-coordinatey- y-coordinate- Returns:
- the transformed point.
-
transform
public Vector transform(Vector vector)
Transforms the given vector by this matrix.- Parameters:
vector- 2D vector- Returns:
- the transformed vector.
-
getScaleInstance
public static Matrix getScaleInstance(float x, float y)
Convenience method to create a scaled instance. Produces the following matrix: x 0 0 0 y 0 0 0 1- Parameters:
x- The x-scale operator.y- The y-scale operator.- Returns:
- A new matrix with just the x/y scaling
-
getTranslateInstance
public static Matrix getTranslateInstance(float x, float y)
Convenience method to create a translating instance. Produces the following matrix: 1 0 0 0 1 0 x y 1- Parameters:
x- The x translating operator.y- The y translating operator.- Returns:
- A new matrix with just the x/y translating.
-
getRotateInstance
public static Matrix getRotateInstance(double theta, float tx, float ty)
Convenience method to create a rotated instance.- Parameters:
theta- The angle of rotation measured in radianstx- The x translation.ty- The y translation.- Returns:
- A new matrix with the rotation and the x/y translating.
-
concatenate
public static Matrix concatenate(Matrix a, Matrix b)
Produces a copy of the first matrix, with the second matrix concatenated.- Parameters:
a- The matrix to copy.b- The matrix to concatenate.- Returns:
- a copy of the first matrix with the second matrix concatenated
-
clone
public Matrix clone()
Clones this object.- Overrides:
clonein classjava.lang.Object- Returns:
- cloned matrix as an object.
-
getScalingFactorX
public float getScalingFactorX()
Returns the x-scaling factor of this matrix. This is calculated from the scale and shear.- Returns:
- The x-scaling factor.
-
getScalingFactorY
public float getScalingFactorY()
Returns the y-scaling factor of this matrix. This is calculated from the scale and shear.- Returns:
- The y-scaling factor.
-
getScaleX
public float getScaleX()
Returns the x-scaling element of this matrix.- Returns:
- the x-scaling element of the matrix
- See Also:
getScalingFactorX()
-
getShearY
public float getShearY()
Returns the y-shear element of this matrix.- Returns:
- the y-shear element of the matrix
-
getShearX
public float getShearX()
Returns the x-shear element of this matrix.- Returns:
- the x-shear element of the matrix
-
getScaleY
public float getScaleY()
Returns the y-scaling element of this matrix.- Returns:
- the y-scaling element of the matrix
- See Also:
getScalingFactorY()
-
getTranslateX
public float getTranslateX()
Returns the x-translation element of this matrix.- Returns:
- the x-translation element of the matrix
-
getTranslateY
public float getTranslateY()
Returns the y-translation element of this matrix.- Returns:
- the y-translation element of the matrix
-
toCOSArray
public COSArray toCOSArray()
Returns a COS array which represent the geometric relevant components of the matrix. The last column of the matrix is ignored, only the first two columns are returned. This is analog to the Matrix(COSArray) constructor.- Returns:
- a COSArray representing the geometric relevant components of the matrix
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
-