Module javafx.graphics
Package javafx.scene.transform

# Class Transform

java.lang.Object
javafx.scene.transform.Transform

All Implemented Interfaces:
  `Cloneable`, `EventTarget`

Direct Known Subclasses:
  `Affine`, `Rotate`, `Scale`, `Shear`, `Translate`

public abstract class Transform extends Object implements Cloneable, EventTarget
This class is a base class for different affine transformations. It provides factory methods for the simple transformations - rotating, scaling, shearing, and translation. It allows to get the transformation matrix elements for any transform.

Example:

      Rectangle rect = new Rectangle(50,50, Color.RED);
      rect.getTransforms().add(new Rotate(45,0,0)); //rotate by 45 degrees

Since:
  JavaFX 2.0

## Property Summary

Properties
Type
Property
Description
`final ReadOnlyBooleanProperty`
`identity`
Determines if this is currently an identity transform.
`final ObjectProperty<EventHandler<? super TransformChangedEvent>>`
`onTransformChanged`
The onTransformChanged event handler is called whenever the transform changes any of its parameters.
`final ReadOnlyBooleanProperty`
`type2D`
Determines if this is currently a 2D transform.

## Constructor Summary

Constructors
Constructor
Description
`Transform()`

## Method Summary

Modifier and Type
Method
Description
`final <T extends Event>
void`
`addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)`
Registers an event filter to this transform.
`final <T extends Event>
void`
`addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)`
Registers an event handler to this transform.
`static Affine`
`affine(double mxx, double myx, double mxy, double myy, double tx, double ty)`
Returns a new `Affine` object from 12 number values representing the 6 specifiable entries of the 3x4 Affine transformation matrix.
`static Affine`
`affine(double mxx, double mxy, double mxz, double tx, double myx, double myy, double myz, double ty, double mzx, double mzy, double mzz, double tz)`
Returns a new `Affine` object from 12 number values representing the 12 specifiable entries of the 3x4 Affine transformation matrix.
`EventDispatchChain`
`buildEventDispatchChain(EventDispatchChain tail)`
Construct an event dispatch chain for this target.
`Transform`
`clone()`
Returns a deep copy of this transform.
`double[]`
`column(MatrixType type, int column)`
Returns an array containing a column of the transformation matrix.
`double[]`
`column(MatrixType type, int column, double[] array)`
Returns an array containing a column of the transformation matrix.
`Transform`
`createConcatenation(Transform transform)`
Returns the concatenation of this transform and the specified transform.
`Transform`
`createInverse()`
Returns the inverse transform of this transform.
`Point2D`
`deltaTransform(double x, double y)`
Transforms the relative magnitude vector by this transform.
`Point3D`
`deltaTransform(double x, double y, double z)`
Transforms the relative magnitude vector by this transform.
`Point2D`
`deltaTransform(Point2D point)`
Transforms the relative magnitude vector represented by the specified `Point2D` instance by this transform.
`Point3D`
`deltaTransform(Point3D point)`
Transforms the relative magnitude vector represented by the specified `Point3D` instance by this transform.
`double`
`determinant()`
Computes determinant of the transformation matrix.
`double`
`getElement(MatrixType type, int row, int column)`
Gets the specified element of the transformation matrix.
`double`
`getMxx()`
Gets the X coordinate scaling element of the 3x4 matrix.
`double`
`getMxy()`
Gets the XY coordinate element of the 3x4 matrix.
`double`
`getMxz()`
Gets the XZ coordinate element of the 3x4 matrix.
`double`
`getMyx()`
Gets the YX coordinate element of the 3x4 matrix.
`double`
`getMyy()`
Gets the Y coordinate scaling element of the 3x4 matrix.
`double`
`getMyz()`
Gets the YZ coordinate element of the 3x4 matrix.
`double`
`getMzx()`
Gets the ZX coordinate element of the 3x4 matrix.
`double`
`getMzy()`
Gets the ZY coordinate element of the 3x4 matrix.
`double`
`getMzz()`
Gets the Z coordinate scaling element of the 3x4 matrix.
`final EventHandler<? super TransformChangedEvent>`
`getOnTransformChanged()`
Gets the onTransformChanged event handler.
`double`
`getTx()`
Gets the X coordinate translation element of the 3x4 matrix.
`double`
`getTy()`
Gets the Y coordinate translation element of the 3x4 matrix.
`double`
`getTz()`
Gets the Z coordinate translation element of the 3x4 matrix.
`final ReadOnlyBooleanProperty`
`identityProperty()`
Determines if this is currently an identity transform.
`Point2D`
`inverseDeltaTransform(double x, double y)`
Transforms the relative magnitude vector by the inverse of this transform.
`Point3D`
`inverseDeltaTransform(double x, double y, double z)`
Transforms the relative magnitude vector by the inverse of this transform.
`Point2D`
`inverseDeltaTransform(Point2D point)`
Transforms the relative magnitude vector represented by the specified `Point2D` instance by the inverse of this transform.
`Point3D`
`inverseDeltaTransform(Point3D point)`
Transforms the relative magnitude vector represented by the specified `Point3D` instance by the inverse of this transform.
`Point2D`
`inverseTransform(double x, double y)`
Transforms the specified point by the inverse of this transform.
`Point3D`
`inverseTransform(double x, double y, double z)`
Transforms the specified point by the inverse of this transform.
`Bounds`
`inverseTransform(Bounds bounds)`
Transforms the specified bounds by the inverse of this transform.
`Point2D`
`inverseTransform(Point2D point)`
Transforms the specified point by the inverse of this transform.
`Point3D`
`inverseTransform(Point3D point)`
Transforms the specified point by the inverse of this transform.
`void`
`inverseTransform2DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)`
Transforms an array of coordinates by the inverse of this transform.
`void`
`inverseTransform3DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)`
Transforms an array of floating point coordinates by the inverse of this transform.
`final boolean`
`isIdentity()`
Gets the value of the `identity` property.
`final boolean`
`isType2D()`
Gets the value of the `type2D` property.
`final ObjectProperty<EventHandler<? super TransformChangedEvent>>`
`onTransformChangedProperty()`
The onTransformChanged event handler is called whenever the transform changes any of its parameters.
`final <T extends Event>
void`
`removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)`
Unregisters a previously registered event filter from this transform.
`final <T extends Event>
void`
`removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)`
Unregisters a previously registered event handler from this transform.
`static Rotate`
`rotate(double angle, double pivotX, double pivotY)`
Returns a `Rotate` object that rotates coordinates around a pivot point.
`double[]`
`row(MatrixType type, int row)`
Returns an array containing a row of the transformation matrix.
`double[]`
`row(MatrixType type, int row, double[] array)`
Returns an array containing a row of the transformation matrix.
`static Scale`
`scale(double x, double y)`
Returns a `Scale` object representing a scaling transformation.
`static Scale`
`scale(double x, double y, double pivotX, double pivotY)`
Returns a `Scale` object representing a scaling transformation.
`final void`
`setOnTransformChanged(EventHandler<? super TransformChangedEvent> value)`
Sets the onTransformChanged event handler which is called whenever the transform changes any of its parameters.
`static Shear`
`shear(double x, double y)`
Returns a `Shear` object representing a shearing transformation.
`static Shear`
`shear(double x, double y, double pivotX, double pivotY)`
Returns a `Shear` object representing a shearing transformation.
`boolean`
`similarTo(Transform transform, Bounds range, double maxDelta)`
Checks if this transform is similar to the specified transform.
`double[]`
`toArray(MatrixType type)`
Returns an array containing the flattened transformation matrix.
`double[]`
`toArray(MatrixType type, double[] array)`
Returns an array containing the flattened transformation matrix.
`Point2D`
`transform(double x, double y)`
Transforms the specified point by this transform.
`Point3D`
`transform(double x, double y, double z)`
Transforms the specified point by this transform.
`Bounds`
`transform(Bounds bounds)`
Transforms the specified bounds by this transform.
`Point2D`
`transform(Point2D point)`
Transforms the specified point by this transform.
`Point3D`
`transform(Point3D point)`
Transforms the specified point by this transform.
`void`
`transform2DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)`
Transforms an array of coordinates by this transform.
`void`
`transform3DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)`
Transforms an array of floating point coordinates by this transform.
`protected void`
`transformChanged()`
This method must be called by all transforms whenever any of their parameters changes.
`static Translate`
`translate(double x, double y)`
Returns a `Translate` object representing a translation transformation.
`final ReadOnlyBooleanProperty`
`type2DProperty()`
Determines if this is currently a 2D transform.

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

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

## Property Details

### type2D

public final ReadOnlyBooleanProperty type2DProperty
Determines if this is currently a 2D transform. Transform is 2D if it has no effect along the Z axis.

Since:
  JavaFX 8.0
See Also:
  - `isType2D()`
  - `type2DProperty()`

### identity

public final ReadOnlyBooleanProperty identityProperty
Determines if this is currently an identity transform. Identity transform has no effect on the transformed nodes.

Since:
  JavaFX 8.0
See Also:
  - `isIdentity()`
  - `identityProperty()`

### onTransformChanged

public final ObjectProperty<EventHandler<? super TransformChangedEvent>> onTransformChangedProperty
The onTransformChanged event handler is called whenever the transform changes any of its parameters.

Since:
  JavaFX 8.0
See Also:
  - `getOnTransformChanged()`
  - `setOnTransformChanged(EventHandler)`
  - `onTransformChangedProperty()`

## Constructor Details

### Transform

public Transform()

## Method Details

### affine

public static Affine affine(double mxx, double myx, double mxy, double myy, double tx, double ty)
Returns a new `Affine` object from 12 number values representing the 6 specifiable entries of the 3x4 Affine transformation matrix.

Parameters:
  `mxx` - the X coordinate scaling element of the 3x4 matrix
  `myx` - the Y coordinate shearing element of the 3x4 matrix
  `mxy` - the X coordinate shearing element of the 3x4 matrix
  `myy` - the Y coordinate scaling element of the 3x4 matrix
  `tx` - the X coordinate translation element of the 3x4 matrix
  `ty` - the Y coordinate translation element of the 3x4 matrix
Returns:
  a new `Affine` object derived from specified parameters

### affine

public static Affine affine(double mxx, double mxy, double mxz, double tx, double myx, double myy, double myz, double ty, double mzx, double mzy, double mzz, double tz)
Returns a new `Affine` object from 12 number values representing the 12 specifiable entries of the 3x4 Affine transformation matrix.

Parameters:
  `mxx` - the X coordinate scaling element of the 3x4 matrix
  `mxy` - the XY element of the 3x4 matrix
  `mxz` - the XZ element of the 3x4 matrix
  `tx` - the X coordinate translation element of the 3x4 matrix
  `myx` - the YX element of the 3x4 matrix
  `myy` - the Y coordinate scaling element of the 3x4 matrix
  `myz` - the YZ element of the 3x4 matrix
  `ty` - the Y coordinate translation element of the 3x4 matrix
  `mzx` - the ZX element of the 3x4 matrix
  `mzy` - the ZY element of the 3x4 matrix
  `mzz` - the Z coordinate scaling element of the 3x4 matrix
  `tz` - the Z coordinate translation element of the 3x4 matrix
Returns:
  a new `Affine` object derived from specified parameters

### translate

public static Translate translate(double x, double y)
Returns a `Translate` object representing a translation transformation.

This is equivalent to:

        new Translate(x, y);

Parameters:
  `x` - the translate x value
  `y` - the translate y value
Returns:
  the Translate object representing a translation transformation

### rotate

public static Rotate rotate(double angle, double pivotX, double pivotY)
Returns a `Rotate` object that rotates coordinates around a pivot point.

This is equivalent to:

        new Rotate(angle, pivotX, pivotY);

Parameters:
  `angle` - the rotation angle
  `pivotX` - the pivot x value
  `pivotY` - the pivot y value
Returns:
  the Rotate object that rotates coordinates around a pivot point

### scale

public static Scale scale(double x, double y)
Returns a `Scale` object representing a scaling transformation.

This is equivalent to:

        new Scale(x, y);

Parameters:
  `x` - the scale x value
  `y` - the scale y value
Returns:
  the Scale object representing a scaling transformation

### scale

public static Scale scale(double x, double y, double pivotX, double pivotY)
Returns a `Scale` object representing a scaling transformation. The returned scale operation will be about the given pivot point.

This is equivalent to:

        new Scale(x, y, pivotX, pivotY);

Parameters:
  `x` - the scale x value
  `y` - the scale y value
  `pivotX` - the pivot x value
  `pivotY` - the pivot y value
Returns:
  the Scale object representing a scaling transformation

### shear

public static Shear shear(double x, double y)
Returns a `Shear` object representing a shearing transformation.

This is equivalent to:

        new Shear(x, y);

Parameters:
  `x` - the shear x value
  `y` - the shear y value
Returns:
  the Shear object representing a shearing transformation

### shear

public static Shear shear(double x, double y, double pivotX, double pivotY)
Returns a `Shear` object representing a shearing transformation.

This is equivalent to:

        new Shear(x, y, pivotX, pivotY);

Parameters:
  `x` - the shear x value
  `y` - the shear y value
  `pivotX` - the pivot x value
  `pivotY` - the pivot y value
Returns:
  the Shear object representing a shearing transformation

### getMxx

public double getMxx()
Gets the X coordinate scaling element of the 3x4 matrix.

Returns:
  the X coordinate scaling element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMxy

public double getMxy()
Gets the XY coordinate element of the 3x4 matrix.

Returns:
  the XY coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMxz

public double getMxz()
Gets the XZ coordinate element of the 3x4 matrix.

Returns:
  the XZ coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getTx

public double getTx()
Gets the X coordinate translation element of the 3x4 matrix.

Returns:
  the X coordinate translation element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMyx

public double getMyx()
Gets the YX coordinate element of the 3x4 matrix.

Returns:
  the YX coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMyy

public double getMyy()
Gets the Y coordinate scaling element of the 3x4 matrix.

Returns:
  the Y coordinate scaling element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMyz

public double getMyz()
Gets the YZ coordinate element of the 3x4 matrix.

Returns:
  the YZ coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getTy

public double getTy()
Gets the Y coordinate translation element of the 3x4 matrix.

Returns:
  the Y coordinate translation element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMzx

public double getMzx()
Gets the ZX coordinate element of the 3x4 matrix.

Returns:
  the ZX coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMzy

public double getMzy()
Gets the ZY coordinate element of the 3x4 matrix.

Returns:
  the ZY coordinate element of the 3x4 matrix
Since:
  JavaFX 2.2

### getMzz

public double getMzz()
Gets the Z coordinate scaling element of the 3x4 matrix.

Returns:
  the Z coordinate scaling element of the 3x4 matrix
Since:
  JavaFX 2.2

### getTz

public double getTz()
Gets the Z coordinate translation element of the 3x4 matrix.

Returns:
  the Z coordinate translation element of the 3x4 matrix
Since:
  JavaFX 2.2

### getElement

public double getElement(MatrixType type, int row, int column)
Gets the specified element of the transformation matrix.

Parameters:
  `type` - type of matrix to get the value from
  `row` - zero-based row number
  `column` - zero-based column number
Returns:
  value of the specified transformation matrix element
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `IndexOutOfBoundsException` - if the indices are not within the specified matrix type
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### determinant

public double determinant()
Computes determinant of the transformation matrix. Among other things, determinant can be used for testing this transform's invertibility - it is invertible if determinant is not equal to zero.

Returns:
  Determinant of the transformation matrix
Since:
  JavaFX 8.0

### isType2D

public final boolean isType2D()
Gets the value of the `type2D` property.

Property description:
  Determines if this is currently a 2D transform. Transform is 2D if it has no effect along the Z axis.
Returns:
  the value of the `type2D` property
Since:
  JavaFX 8.0
See Also:
  - `type2DProperty()`

### type2DProperty

public final ReadOnlyBooleanProperty type2DProperty()
Determines if this is currently a 2D transform. Transform is 2D if it has no effect along the Z axis.

Returns:
  the `type2D` property
Since:
  JavaFX 8.0
See Also:
  - `isType2D()`

### isIdentity

public final boolean isIdentity()
Gets the value of the `identity` property.

Property description:
  Determines if this is currently an identity transform. Identity transform has no effect on the transformed nodes.
Returns:
  the value of the `identity` property
Since:
  JavaFX 8.0
See Also:
  - `identityProperty()`

### identityProperty

public final ReadOnlyBooleanProperty identityProperty()
Determines if this is currently an identity transform. Identity transform has no effect on the transformed nodes.

Returns:
  the `identity` property
Since:
  JavaFX 8.0
See Also:
  - `isIdentity()`

### similarTo

public boolean similarTo(Transform transform, Bounds range, double maxDelta)
Checks if this transform is similar to the specified transform. The two transforms are considered similar if any point from `range` is transformed by them to points that are no farther than `maxDelta` from each other.

Parameters:
  `transform` - transform to be compared to this transform
  `range` - region of interest on which the two transforms are compared
  `maxDelta` - maximum allowed distance for the results of transforming any single point from `range` by the two transforms
Returns:
  true if the transforms are similar according to the specified criteria
Throws:
  `NullPointerException` - if the specified `transform` or `range` is null
Since:
  JavaFX 8.0

### toArray

public double[] toArray(MatrixType type, double[] array)
Returns an array containing the flattened transformation matrix. If the requested matrix type fits in the specified array, it is returned therein. Otherwise, a new array is created.

Parameters:
  `type` - matrix type to be filled in the array
  `array` - array into which the elements of the matrix are to be stored, if it is non-null and big enough; otherwise, a new array is created for this purpose.
Returns:
  an array containing the elements of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### toArray

public double[] toArray(MatrixType type)
Returns an array containing the flattened transformation matrix.

Parameters:
  `type` - matrix type to be filled in the array
Returns:
  an array containing the elements of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### row

public double[] row(MatrixType type, int row, double[] array)
Returns an array containing a row of the transformation matrix. If the row of the requested matrix type fits in the specified array, it is returned therein. Otherwise, a new array is created.

Parameters:
  `type` - matrix type whose row is to be filled in the array
  `row` - zero-based index of the row
  `array` - array into which the elements of the row are to be stored, if it is non-null and big enough; otherwise, a new array is created for this purpose.
Returns:
  an array containing the requested row of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `IndexOutOfBoundsException` - if the `row` index is not within the number of rows of the specified matrix type
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### row

public double[] row(MatrixType type, int row)
Returns an array containing a row of the transformation matrix.

Parameters:
  `type` - matrix type whose row is to be filled in the array
  `row` - zero-based index of the row
Returns:
  an array containing the requested row of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `IndexOutOfBoundsException` - if the `row` index is not within the number of rows of the specified matrix type
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### column

public double[] column(MatrixType type, int column, double[] array)
Returns an array containing a column of the transformation matrix. If the column of the requested matrix type fits in the specified array, it is returned therein. Otherwise, a new array is created.

Parameters:
  `type` - matrix type whose column is to be filled in the array
  `column` - zero-based index of the column
  `array` - array into which the elements of the column are to be stored, if it is non-null and big enough; otherwise, a new array is created for this purpose.
Returns:
  an array containing the requested column of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `IndexOutOfBoundsException` - if the `column` index is not within the number of columns of the specified matrix type
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### column

public double[] column(MatrixType type, int column)
Returns an array containing a column of the transformation matrix.

Parameters:
  `type` - matrix type whose column is to be filled in the array
  `column` - zero-based index of the column
Returns:
  an array containing the requested column of the requested matrix type representing this transform
Throws:
  `IllegalArgumentException` - if a 2D matrix type is requested for a 3D transform
  `IndexOutOfBoundsException` - if the `column` index is not within the number of columns of the specified matrix type
  `NullPointerException` - if the specified `type` is null
Since:
  JavaFX 8.0

### createConcatenation

public Transform createConcatenation(Transform transform)
Returns the concatenation of this transform and the specified transform. Applying the resulting transform to a node has the same effect as adding the two transforms to its `getTransforms()` list, `this` transform first and the specified `transform` second.

Parameters:
  `transform` - transform to be concatenated with this transform
Returns:
  The concatenated transform
Throws:
  `NullPointerException` - if the specified `transform` is null
Since:
  JavaFX 8.0

### createInverse

public Transform createInverse() throws NonInvertibleTransformException
Returns the inverse transform of this transform.

Returns:
  the inverse transform
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
Since:
  JavaFX 8.0

### clone

public Transform clone()
Returns a deep copy of this transform.

Overrides:
  `clone` in class `Object`
Returns:
  a copy of this transform
Since:
  JavaFX 8.0

### transform

public Point2D transform(double x, double y)
Transforms the specified point by this transform. This method can be used only for 2D transforms.

Parameters:
  `x` - the X coordinate of the point
  `y` - the Y coordinate of the point
Returns:
  the transformed point
Throws:
  `IllegalStateException` - if this is a 3D transform
Since:
  JavaFX 8.0

### transform

public Point2D transform(Point2D point)
Transforms the specified point by this transform. This method can be used only for 2D transforms.

Parameters:
  `point` - the point to be transformed
Returns:
  the transformed point
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### transform

public Point3D transform(double x, double y, double z)
Transforms the specified point by this transform.

Parameters:
  `x` - the X coordinate of the point
  `y` - the Y coordinate of the point
  `z` - the Z coordinate of the point
Returns:
  the transformed point
Since:
  JavaFX 8.0

### transform

public Point3D transform(Point3D point)
Transforms the specified point by this transform.

Parameters:
  `point` - the point to be transformed
Returns:
  the transformed point
Throws:
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### transform

public Bounds transform(Bounds bounds)
Transforms the specified bounds by this transform.

Parameters:
  `bounds` - the bounds to be transformed
Returns:
  the transformed bounds
Since:
  JavaFX 8.0

### transform2DPoints

public void transform2DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Transforms an array of coordinates by this transform. The two coordinate array sections can be exactly the same or can be overlapping sections of the same array without affecting the validity of the results. This method ensures that no source coordinates are overwritten by a previous operation before they can be transformed. The coordinates are stored in the arrays starting at the specified offset in the order `[x0, y0, x1, y1, ..., xn, yn]`. This method can be used only for 2D transforms.

Parameters:
  `srcPts` - the array containing the source point coordinates. Each point is stored as a pair of x, y coordinates.
  `srcOff` - the offset to the first point to be transformed in the source array
  `dstPts` - the array into which the transformed point coordinates are returned. Each point is stored as a pair of x, y coordinates.
  `dstOff` - the offset to the location of the first transformed point that is stored in the destination array
  `numPts` - the number of points to be transformed
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NullPointerException` - if `srcPts` or (@code dstPts} is null
Since:
  JavaFX 8.0

### transform3DPoints

public void transform3DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Transforms an array of floating point coordinates by this transform. The three coordinate array sections can be exactly the same or can be overlapping sections of the same array without affecting the validity of the results. This method ensures that no source coordinates are overwritten by a previous operation before they can be transformed. The coordinates are stored in the arrays starting at the specified offset in the order `[x0, y0, z0, x1, y1, z1, ..., xn, yn, zn]`.

Parameters:
  `srcPts` - the array containing the source point coordinates. Each point is stored as a tiplet of x, y, z coordinates.
  `srcOff` - the offset to the first point to be transformed in the source array
  `dstPts` - the array into which the transformed point coordinates are returned. Each point is stored as a triplet of x, y, z coordinates.
  `dstOff` - the offset to the location of the first transformed point that is stored in the destination array
  `numPts` - the number of points to be transformed
Throws:
  `NullPointerException` - if `srcPts` or (@code dstPts} is null
Since:
  JavaFX 8.0

### deltaTransform

public Point2D deltaTransform(double x, double y)
Transforms the relative magnitude vector by this transform. The vector is transformed without applying the translation components of the affine transformation matrix. This method can be used only for a 2D transform.

Parameters:
  `x` - vector magnitude in the direction of the X axis
  `y` - vector magnitude in the direction of the Y axis
Returns:
  the transformed relative magnitude vector represented by a `Point2D` instance
Throws:
  `IllegalStateException` - if this is a 3D transform
Since:
  JavaFX 8.0

### deltaTransform

public Point2D deltaTransform(Point2D point)
Transforms the relative magnitude vector represented by the specified `Point2D` instance by this transform. The vector is transformed without applying the translation components of the affine transformation matrix. This method can be used only for a 2D transform.

Parameters:
  `point` - the relative magnitude vector
Returns:
  the transformed relative magnitude vector represented by a `Point2D` instance
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### deltaTransform

public Point3D deltaTransform(double x, double y, double z)
Transforms the relative magnitude vector by this transform. The vector is transformed without applying the translation components of the affine transformation matrix.

Parameters:
  `x` - vector magnitude in the direction of the X axis
  `y` - vector magnitude in the direction of the Y axis
  `z` - vector magnitude in the direction of the Z axis
Returns:
  the transformed relative magnitude vector represented by a `Point3D` instance
Since:
  JavaFX 8.0

### deltaTransform

public Point3D deltaTransform(Point3D point)
Transforms the relative magnitude vector represented by the specified `Point3D` instance by this transform. The vector is transformed without applying the translation components of the affine transformation matrix.

Parameters:
  `point` - the relative magnitude vector
Returns:
  the transformed relative magnitude vector represented by a `Point3D` instance
Throws:
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### inverseTransform

public Point2D inverseTransform(double x, double y) throws NonInvertibleTransformException
Transforms the specified point by the inverse of this transform. This method can be used only for 2D transforms.

Parameters:
  `x` - the X coordinate of the point
  `y` - the Y coordinate of the point
Returns:
  the inversely transformed point
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NonInvertibleTransformException` - if this transform cannot be inverted
Since:
  JavaFX 8.0

### inverseTransform

public Point2D inverseTransform(Point2D point) throws NonInvertibleTransformException
Transforms the specified point by the inverse of this transform. This method can be used only for 2D transforms.

Parameters:
  `point` - the point to be transformed
Returns:
  the inversely transformed point
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### inverseTransform

public Point3D inverseTransform(double x, double y, double z) throws NonInvertibleTransformException
Transforms the specified point by the inverse of this transform.

Parameters:
  `x` - the X coordinate of the point
  `y` - the Y coordinate of the point
  `z` - the Z coordinate of the point
Returns:
  the inversely transformed point
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
Since:
  JavaFX 8.0

### inverseTransform

public Point3D inverseTransform(Point3D point) throws NonInvertibleTransformException
Transforms the specified point by the inverse of this transform.

Parameters:
  `point` - the point to be transformed
Returns:
  the inversely transformed point
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### inverseTransform

public Bounds inverseTransform(Bounds bounds) throws NonInvertibleTransformException
Transforms the specified bounds by the inverse of this transform.

Parameters:
  `bounds` - the bounds to be transformed
Returns:
  the inversely transformed bounds
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if the specified `bounds` is null
Since:
  JavaFX 8.0

### inverseTransform2DPoints

public void inverseTransform2DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws NonInvertibleTransformException
Transforms an array of coordinates by the inverse of this transform. The two coordinate array sections can be exactly the same or can be overlapping sections of the same array without affecting the validity of the results. This method ensures that no source coordinates are overwritten by a previous operation before they can be transformed. The coordinates are stored in the arrays starting at the specified offset in the order `[x0, y0, x1, y1, ..., xn, yn]`. This method can be used only for 2D transforms.

Parameters:
  `srcPts` - the array containing the source point coordinates. Each point is stored as a pair of x, y coordinates.
  `srcOff` - the offset to the first point to be transformed in the source array
  `dstPts` - the array into which the transformed point coordinates are returned. Each point is stored as a pair of x, y coordinates.
  `dstOff` - the offset to the location of the first transformed point that is stored in the destination array
  `numPts` - the number of points to be transformed
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if `srcPts` or (@code dstPts} is null
Since:
  JavaFX 8.0

### inverseTransform3DPoints

public void inverseTransform3DPoints(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws NonInvertibleTransformException
Transforms an array of floating point coordinates by the inverse of this transform. The three coordinate array sections can be exactly the same or can be overlapping sections of the same array without affecting the validity of the results. This method ensures that no source coordinates are overwritten by a previous operation before they can be transformed. The coordinates are stored in the arrays starting at the specified offset in the order `[x0, y0, z0, x1, y1, z1, ..., xn, yn, zn]`.

Parameters:
  `srcPts` - the array containing the source point coordinates. Each point is stored as a triplet of x, y, z coordinates.
  `srcOff` - the offset to the first point to be transformed in the source array
  `dstPts` - the array into which the transformed point coordinates are returned. Each point is stored as a triplet of x, y, z coordinates.
  `dstOff` - the offset to the location of the first transformed point that is stored in the destination array
  `numPts` - the number of points to be transformed
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if `srcPts` or (@code dstPts} is null
Since:
  JavaFX 8.0

### inverseDeltaTransform

public Point2D inverseDeltaTransform(double x, double y) throws NonInvertibleTransformException
Transforms the relative magnitude vector by the inverse of this transform. The vector is transformed without applying the translation components of the affine transformation matrix. This method can be used only for a 2D transform.

Parameters:
  `x` - vector magnitude in the direction of the X axis
  `y` - vector magnitude in the direction of the Y axis
Returns:
  the inversely transformed relative magnitude vector represented by a `Point2D` instance
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NonInvertibleTransformException` - if this transform cannot be inverted
Since:
  JavaFX 8.0

### inverseDeltaTransform

public Point2D inverseDeltaTransform(Point2D point) throws NonInvertibleTransformException
Transforms the relative magnitude vector represented by the specified `Point2D` instance by the inverse of this transform. The vector is transformed without applying the translation components of the affine transformation matrix. This method can be used only for a 2D transform.

Parameters:
  `point` - the relative magnitude vector
Returns:
  the inversely transformed relative magnitude vector represented by a `Point2D` instance
Throws:
  `IllegalStateException` - if this is a 3D transform
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### inverseDeltaTransform

public Point3D inverseDeltaTransform(double x, double y, double z) throws NonInvertibleTransformException
Transforms the relative magnitude vector by the inverse of this transform. The vector is transformed without applying the translation components of the affine transformation matrix.

Parameters:
  `x` - vector magnitude in the direction of the X axis
  `y` - vector magnitude in the direction of the Y axis
  `z` - vector magnitude in the direction of the Z axis
Returns:
  the inversely transformed relative magnitude vector represented by a `Point3D` instance
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
Since:
  JavaFX 8.0

### inverseDeltaTransform

public Point3D inverseDeltaTransform(Point3D point) throws NonInvertibleTransformException
Transforms the relative magnitude vector represented by the specified `Point3D` instance by the inverse of this transform. The vector is transformed without applying the translation components of the affine transformation matrix.

Parameters:
  `point` - the relative magnitude vector
Returns:
  the inversely transformed relative magnitude vector represented by a `Point3D` instance
Throws:
  `NonInvertibleTransformException` - if this transform cannot be inverted
  `NullPointerException` - if the specified `point` is null
Since:
  JavaFX 8.0

### buildEventDispatchChain

public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
Description copied from interface: `EventTarget`
Construct an event dispatch chain for this target. The event dispatch chain contains event dispatchers which might be interested in processing of events targeted at this `EventTarget`. This event target is not automatically added to the chain, so if it wants to process events, it needs to add an `EventDispatcher` for itself to the chain.

In the case the event target is part of some hierarchy, the chain for it is usually built from event dispatchers collected from the root of the hierarchy to the event target.

The event dispatch chain is constructed by modifications to the provided initial event dispatch chain. The returned chain should have the initial chain at its end so the dispatchers should be prepended to the initial chain.

The caller shouldn't assume that the initial chain remains unchanged nor that the returned value will reference a different chain.

Specified by:
  `buildEventDispatchChain` in interface `EventTarget`
Parameters:
  `tail` - the initial chain to build from
Returns:
  the resulting event dispatch chain for this target

### addEventHandler

public final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)

Registers an event handler to this transform. Any event filters are first processed, then the specified onFoo event handlers, and finally any event handlers registered by this method.

Currently the only event delivered to a `Transform` is the `TransformChangedEvent` with it's single type `TRANSFORM_CHANGED`.

Type Parameters:
  `T` - the specific event class of the handler
Parameters:
  `eventType` - the type of the events to receive by the handler
  `eventHandler` - the handler to register
Throws:
  `NullPointerException` - if the event type or handler is null
Since:
  JavaFX 8.0

### removeEventHandler

public final <T extends Event> void removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Unregisters a previously registered event handler from this transform. One handler might have been registered for different event types, so the caller needs to specify the particular event type from which to unregister the handler.

Type Parameters:
  `T` - the specific event class of the handler
Parameters:
  `eventType` - the event type from which to unregister
  `eventHandler` - the handler to unregister
Throws:
  `NullPointerException` - if the event type or handler is null
Since:
  JavaFX 8.0

### addEventFilter

public final <T extends Event> void addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)

Registers an event filter to this transform. Registered event filters get an event before any associated event handlers.

Currently the only event delivered to a `Transform` is the `TransformChangedEvent` with it's single type `TRANSFORM_CHANGED`.

Type Parameters:
  `T` - the specific event class of the filter
Parameters:
  `eventType` - the type of the events to receive by the filter
  `eventFilter` - the filter to register
Throws:
  `NullPointerException` - if the event type or filter is null
Since:
  JavaFX 8.0

### removeEventFilter

public final <T extends Event> void removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
Unregisters a previously registered event filter from this transform. One filter might have been registered for different event types, so the caller needs to specify the particular event type from which to unregister the filter.

Type Parameters:
  `T` - the specific event class of the filter
Parameters:
  `eventType` - the event type from which to unregister
  `eventFilter` - the filter to unregister
Throws:
  `NullPointerException` - if the event type or filter is null
Since:
  JavaFX 8.0

### setOnTransformChanged

public final void setOnTransformChanged(EventHandler<? super TransformChangedEvent> value)
Sets the onTransformChanged event handler which is called whenever the transform changes any of its parameters.

Parameters:
  `value` - the event handler, can be null to clear it
Since:
  JavaFX 8.0

### getOnTransformChanged

public final EventHandler<? super TransformChangedEvent> getOnTransformChanged()
Gets the onTransformChanged event handler.

Returns:
  the event handler previously set by `setOnTransformChanged` method, null if the handler is not set.
Since:
  JavaFX 8.0

### onTransformChangedProperty

public final ObjectProperty<EventHandler<? super TransformChangedEvent>> onTransformChangedProperty()
The onTransformChanged event handler is called whenever the transform changes any of its parameters.

Returns:
  the onTransformChanged event handler
Since:
  JavaFX 8.0
See Also:
  - `getOnTransformChanged()`
  - `setOnTransformChanged(EventHandler)`

### transformChanged

protected void transformChanged()
This method must be called by all transforms whenever any of their parameters changes. It is typically called when any of the transform's properties is invalidated (it is OK to skip the call if an invalid property is set).

Since:
  JavaFX 8.0