Module javafx.graphics
Package javafx.scene.effect

# Class DisplacementMap

java.lang.Object
javafx.scene.effect.Effect
javafx.scene.effect.DisplacementMap

public class DisplacementMap extends Effect
An effect that shifts each pixel by a distance specified by the first two bands of of the specified `FloatMap`. For each pixel in the output, the corresponding data from the `mapData` is retrieved, scaled and offset by the `scale` and `offset` attributes, scaled again by the size of the source input image and used as an offset from the destination pixel to retrieve the pixel data from the source input.

`dst[x, y] = src[(x, y) + (offset + scale * map[x, y]) * (srcw, srch)]`

A value of `(0.0, 0.0)` would specify no offset for the pixel data whereas a value of `(0.5, 0.5)` would specify an offset of half of the source image size.

Note that the mapping is the offset from a destination pixel to the source pixel location from which it is sampled which means that filling the map with all values of `0.5` would displace the image by half of its size towards the upper left since each destination pixel would contain the data that comes from the source pixel below and to the right of it.

Also note that this effect does not adjust the coordinates of input events or any methods that measure containment on a `Node`. The results of mouse picking and the containment methods are undefined when a `Node` has a `DisplacementMap` effect in place.

Example:

     int width = 220;
     int height = 100;

     FloatMap floatMap = new FloatMap();
     floatMap.setWidth(width);
     floatMap.setHeight(height);

     for (int i = 0; i < width; i++) {
         double v = (Math.sin(i / 20.0 * Math.PI) - 0.5) / 40.0;
         for (int j = 0; j < height; j++) {
             floatMap.setSamples(i, j, 0.0f, (float) v);
         }
     }

     DisplacementMap displacementMap = new DisplacementMap();
     displacementMap.setMapData(floatMap);

     Text text = new Text();
     text.setX(40.0);
     text.setY(80.0);
     text.setText("Wavy Text");
     text.setFill(Color.web("0x3b596d"));
     text.setFont(Font.font(null, FontWeight.BOLD, 50));
     text.setEffect(displacementMap);

The code above produces the following:

Since:
  JavaFX 2.0

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Effect>`
  `input`
  The input for this `Effect`.
  `final ObjectProperty<FloatMap>`
  `mapData`
  The map data for this `Effect`.
  `final DoubleProperty`
  `offsetX`
  The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.
  `final DoubleProperty`
  `offsetY`
  The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.
  `final DoubleProperty`
  `scaleX`
  The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.
  `final DoubleProperty`
  `scaleY`
  The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.
  `final BooleanProperty`
  `wrap`
  Defines whether values taken from outside the edges of the map "wrap around" or not.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DisplacementMap()`
  Creates a new instance of DisplacementMap with default parameters.
  `DisplacementMap(FloatMap mapData)`
  Creates a new instance of DisplacementMap with the specified mapData.
  `DisplacementMap(FloatMap mapData, double offsetX, double offsetY, double scaleX, double scaleY)`
  Creates a new instance of DisplacementMap with the specified mapData, offsetX, offsetY, scaleX, and scaleY.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final Effect`
  `getInput()`
  Gets the value of the property input.
  `final FloatMap`
  `getMapData()`
  Gets the value of the property mapData.
  `final double`
  `getOffsetX()`
  Gets the value of the property offsetX.
  `final double`
  `getOffsetY()`
  Gets the value of the property offsetY.
  `final double`
  `getScaleX()`
  Gets the value of the property scaleX.
  `final double`
  `getScaleY()`
  Gets the value of the property scaleY.
  `final ObjectProperty<Effect>`
  `inputProperty()`
  The input for this `Effect`.
  `final boolean`
  `isWrap()`
  Gets the value of the property wrap.
  `final ObjectProperty<FloatMap>`
  `mapDataProperty()`
  The map data for this `Effect`.
  `final DoubleProperty`
  `offsetXProperty()`
  The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.
  `final DoubleProperty`
  `offsetYProperty()`
  The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.
  `final DoubleProperty`
  `scaleXProperty()`
  The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.
  `final DoubleProperty`
  `scaleYProperty()`
  The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.
  `final void`
  `setInput(Effect value)`
  Sets the value of the property input.
  `final void`
  `setMapData(FloatMap value)`
  Sets the value of the property mapData.
  `final void`
  `setOffsetX(double value)`
  Sets the value of the property offsetX.
  `final void`
  `setOffsetY(double value)`
  Sets the value of the property offsetY.
  `final void`
  `setScaleX(double value)`
  Sets the value of the property scaleX.
  `final void`
  `setScaleY(double value)`
  Sets the value of the property scaleY.
  `final void`
  `setWrap(boolean value)`
  Sets the value of the property wrap.
  `final BooleanProperty`
  `wrapProperty()`
  Defines whether values taken from outside the edges of the map "wrap around" or not.

  ### Methods declared in class java.lang.Object

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

- ## Property Details

  - ### input

    public final ObjectProperty<Effect> inputProperty
    The input for this `Effect`. If set to `null`, or left unspecified, a graphical image of the `Node` to which the `Effect` is attached will be used as the input.
    Default value:
      null
    See Also:
      - `getInput()`
      - `setInput(Effect)`

  - ### mapData

    public final ObjectProperty<FloatMap> mapDataProperty
    The map data for this `Effect`.
    Default value:
      an empty map
    See Also:
      - `getMapData()`
      - `setMapData(FloatMap)`

  - ### scaleX

    public final DoubleProperty scaleXProperty
    The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.

               Min: n/a
               Max: n/a
           Default: 1.0
          Identity: 1.0

    Default value:
      1.0
    See Also:
      - `getScaleX()`
      - `setScaleX(double)`

  - ### scaleY

    public final DoubleProperty scaleYProperty
    The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.

               Min: n/a
               Max: n/a
           Default: 1.0
          Identity: 1.0

    Default value:
      1.0
    See Also:
      - `getScaleY()`
      - `setScaleY(double)`

  - ### offsetX

    public final DoubleProperty offsetXProperty
    The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.

               Min: n/a
               Max: n/a
           Default: 0.0
          Identity: 0.0

    Default value:
      0.0
    See Also:
      - `getOffsetX()`
      - `setOffsetX(double)`

  - ### offsetY

    public final DoubleProperty offsetYProperty
    The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.

               Min: n/a
               Max: n/a
           Default: 0.0
          Identity: 0.0

    Default value:
      0.0
    See Also:
      - `getOffsetY()`
      - `setOffsetY(double)`

  - ### wrap

    public final BooleanProperty wrapProperty
    Defines whether values taken from outside the edges of the map "wrap around" or not.

               Min:  n/a
               Max:  n/a
           Default: false
          Identity:  n/a

    Default value:
      false
    See Also:
      - `isWrap()`
      - `setWrap(boolean)`

- ## Constructor Details

  - ### DisplacementMap

    public DisplacementMap()
    Creates a new instance of DisplacementMap with default parameters.

  - ### DisplacementMap

    public DisplacementMap(FloatMap mapData)
    Creates a new instance of DisplacementMap with the specified mapData.
    Parameters:
      `mapData` - the map data for this displacement map effect
    Since:
      JavaFX 2.1

  - ### DisplacementMap

    public DisplacementMap(FloatMap mapData, double offsetX, double offsetY, double scaleX, double scaleY)
    Creates a new instance of DisplacementMap with the specified mapData, offsetX, offsetY, scaleX, and scaleY.
    Parameters:
      `mapData` - the map data for this displacement map effect
      `offsetX` - the offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled
      `offsetY` - the offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled
      `scaleX` - the scale factor by which all x coordinate offset values in the `FloatMap` are multiplied
      `scaleY` - the scale factor by which all y coordinate offset values in the `FloatMap` are multiplied
    Since:
      JavaFX 2.1

- ## Method Details

  - ### setInput

    public final void setInput(Effect value)
    Sets the value of the property input.
    Property description:
      The input for this `Effect`. If set to `null`, or left unspecified, a graphical image of the `Node` to which the `Effect` is attached will be used as the input.
    Default value:
      null

  - ### getInput

    public final Effect getInput()
    Gets the value of the property input.
    Property description:
      The input for this `Effect`. If set to `null`, or left unspecified, a graphical image of the `Node` to which the `Effect` is attached will be used as the input.
    Default value:
      null

  - ### inputProperty

    public final ObjectProperty<Effect> inputProperty()
    The input for this `Effect`. If set to `null`, or left unspecified, a graphical image of the `Node` to which the `Effect` is attached will be used as the input.
    Default value:
      null
    See Also:
      - `getInput()`
      - `setInput(Effect)`

  - ### setMapData

    public final void setMapData(FloatMap value)
    Sets the value of the property mapData.
    Property description:
      The map data for this `Effect`.
    Default value:
      an empty map

  - ### getMapData

    public final FloatMap getMapData()
    Gets the value of the property mapData.
    Property description:
      The map data for this `Effect`.
    Default value:
      an empty map

  - ### mapDataProperty

    public final ObjectProperty<FloatMap> mapDataProperty()
    The map data for this `Effect`.
    Default value:
      an empty map
    See Also:
      - `getMapData()`
      - `setMapData(FloatMap)`

  - ### setScaleX

    public final void setScaleX(double value)
    Sets the value of the property scaleX.
    Property description:
      The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.

                 Min: n/a
                 Max: n/a
             Default: 1.0
            Identity: 1.0

    Default value:
      1.0

  - ### getScaleX

    public final double getScaleX()
    Gets the value of the property scaleX.
    Property description:
      The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.

                 Min: n/a
                 Max: n/a
             Default: 1.0
            Identity: 1.0

    Default value:
      1.0

  - ### scaleXProperty

    public final DoubleProperty scaleXProperty()
    The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.

               Min: n/a
               Max: n/a
           Default: 1.0
          Identity: 1.0

    Default value:
      1.0
    See Also:
      - `getScaleX()`
      - `setScaleX(double)`

  - ### setScaleY

    public final void setScaleY(double value)
    Sets the value of the property scaleY.
    Property description:
      The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.

                 Min: n/a
                 Max: n/a
             Default: 1.0
            Identity: 1.0

    Default value:
      1.0

  - ### getScaleY

    public final double getScaleY()
    Gets the value of the property scaleY.
    Property description:
      The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.

                 Min: n/a
                 Max: n/a
             Default: 1.0
            Identity: 1.0

    Default value:
      1.0

  - ### scaleYProperty

    public final DoubleProperty scaleYProperty()
    The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.

               Min: n/a
               Max: n/a
           Default: 1.0
          Identity: 1.0

    Default value:
      1.0
    See Also:
      - `getScaleY()`
      - `setScaleY(double)`

  - ### setOffsetX

    public final void setOffsetX(double value)
    Sets the value of the property offsetX.
    Property description:
      The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.

                 Min: n/a
                 Max: n/a
             Default: 0.0
            Identity: 0.0

    Default value:
      0.0

  - ### getOffsetX

    public final double getOffsetX()
    Gets the value of the property offsetX.
    Property description:
      The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.

                 Min: n/a
                 Max: n/a
             Default: 0.0
            Identity: 0.0

    Default value:
      0.0

  - ### offsetXProperty

    public final DoubleProperty offsetXProperty()
    The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.

               Min: n/a
               Max: n/a
           Default: 0.0
          Identity: 0.0

    Default value:
      0.0
    See Also:
      - `getOffsetX()`
      - `setOffsetX(double)`

  - ### setOffsetY

    public final void setOffsetY(double value)
    Sets the value of the property offsetY.
    Property description:
      The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.

                 Min: n/a
                 Max: n/a
             Default: 0.0
            Identity: 0.0

    Default value:
      0.0

  - ### getOffsetY

    public final double getOffsetY()
    Gets the value of the property offsetY.
    Property description:
      The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.

                 Min: n/a
                 Max: n/a
             Default: 0.0
            Identity: 0.0

    Default value:
      0.0

  - ### offsetYProperty

    public final DoubleProperty offsetYProperty()
    The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.

               Min: n/a
               Max: n/a
           Default: 0.0
          Identity: 0.0

    Default value:
      0.0
    See Also:
      - `getOffsetY()`
      - `setOffsetY(double)`

  - ### setWrap

    public final void setWrap(boolean value)
    Sets the value of the property wrap.
    Property description:
      Defines whether values taken from outside the edges of the map "wrap around" or not.

                 Min:  n/a
                 Max:  n/a
             Default: false
            Identity:  n/a

    Default value:
      false

  - ### isWrap

    public final boolean isWrap()
    Gets the value of the property wrap.
    Property description:
      Defines whether values taken from outside the edges of the map "wrap around" or not.

                 Min:  n/a
                 Max:  n/a
             Default: false
            Identity:  n/a

    Default value:
      false

  - ### wrapProperty

    public final BooleanProperty wrapProperty()
    Defines whether values taken from outside the edges of the map "wrap around" or not.

               Min:  n/a
               Max:  n/a
           Default: false
          Identity:  n/a

    Default value:
      false
    See Also:
      - `isWrap()`
      - `setWrap(boolean)`