DisplacementMap (JavaFX 17)

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
    --- | --- | ---
    `ObjectProperty<Effect>` | `input` | The input for this `Effect`.
    `ObjectProperty<FloatMap>` | `mapData` | The map data for this `Effect`.
    `DoubleProperty` | `offsetX` | The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.
    `DoubleProperty` | `offsetY` | The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.
    `DoubleProperty` | `scaleX` | The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.
    `DoubleProperty` | `scaleY` | The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.
    `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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Effect` | `getInput()` | Gets the value of the property input.
    `FloatMap` | `getMapData()` | Gets the value of the property mapData.
    `double` | `getOffsetX()` | Gets the value of the property offsetX.
    `double` | `getOffsetY()` | Gets the value of the property offsetY.
    `double` | `getScaleX()` | Gets the value of the property scaleX.
    `double` | `getScaleY()` | Gets the value of the property scaleY.
    `ObjectProperty<Effect>` | `inputProperty()` | The input for this `Effect`.
    `boolean` | `isWrap()` | Gets the value of the property wrap.
    `ObjectProperty<FloatMap>` | `mapDataProperty()` | The map data for this `Effect`.
    `DoubleProperty` | `offsetXProperty()` | The offset by which all x coordinate offset values in the `FloatMap` are displaced after they are scaled.
    `DoubleProperty` | `offsetYProperty()` | The offset by which all y coordinate offset values in the `FloatMap` are displaced after they are scaled.
    `DoubleProperty` | `scaleXProperty()` | The scale factor by which all x coordinate offset values in the `FloatMap` are multiplied.
    `DoubleProperty` | `scaleYProperty()` | The scale factor by which all y coordinate offset values in the `FloatMap` are multiplied.
    `void` | `setInput​(Effect value)` | Sets the value of the property input.
    `void` | `setMapData​(FloatMap value)` | Sets the value of the property mapData.
    `void` | `setOffsetX​(double value)` | Sets the value of the property offsetX.
    `void` | `setOffsetY​(double value)` | Sets the value of the property offsetY.
    `void` | `setScaleX​(double value)` | Sets the value of the property scaleX.
    `void` | `setScaleY​(double value)` | Sets the value of the property scaleY.
    `void` | `setWrap​(boolean value)` | Sets the value of the property wrap.
    `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 Detail

    - #### 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 Detail

    - #### 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 Detail

    - #### 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)`