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
TypePropertyDescriptionfinal ObjectProperty<Effect>
The input for thisEffect
.final ObjectProperty<FloatMap>
The map data for thisEffect
.final DoubleProperty
The offset by which all x coordinate offset values in theFloatMap
are displaced after they are scaled.final DoubleProperty
The offset by which all y coordinate offset values in theFloatMap
are displaced after they are scaled.final DoubleProperty
The scale factor by which all x coordinate offset values in theFloatMap
are multiplied.final DoubleProperty
The scale factor by which all y coordinate offset values in theFloatMap
are multiplied.final BooleanProperty
Defines whether values taken from outside the edges of the map "wrap around" or not. -
Constructor Summary
ConstructorDescriptionCreates 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 TypeMethodDescriptionfinal Effect
getInput()
Gets the value of theinput
property.final FloatMap
Gets the value of themapData
property.final double
Gets the value of theoffsetX
property.final double
Gets the value of theoffsetY
property.final double
Gets the value of thescaleX
property.final double
Gets the value of thescaleY
property.final ObjectProperty<Effect>
The input for thisEffect
.final boolean
isWrap()
Gets the value of thewrap
property.final ObjectProperty<FloatMap>
The map data for thisEffect
.final DoubleProperty
The offset by which all x coordinate offset values in theFloatMap
are displaced after they are scaled.final DoubleProperty
The offset by which all y coordinate offset values in theFloatMap
are displaced after they are scaled.final DoubleProperty
The scale factor by which all x coordinate offset values in theFloatMap
are multiplied.final DoubleProperty
The scale factor by which all y coordinate offset values in theFloatMap
are multiplied.final void
Sets the value of theinput
property.final void
setMapData
(FloatMap value) Sets the value of themapData
property.final void
setOffsetX
(double value) Sets the value of theoffsetX
property.final void
setOffsetY
(double value) Sets the value of theoffsetY
property.final void
setScaleX
(double value) Sets the value of thescaleX
property.final void
setScaleY
(double value) Sets the value of thescaleY
property.final void
setWrap
(boolean value) Sets the value of thewrap
property.final BooleanProperty
Defines whether values taken from outside the edges of the map "wrap around" or not.
-
Property Details
-
input
The input for thisEffect
. If set tonull
, or left unspecified, a graphical image of theNode
to which theEffect
is attached will be used as the input.- Default value:
- null
- See Also:
-
mapData
The map data for thisEffect
.- Default value:
- an empty map
- See Also:
-
scaleX
The scale factor by which all x coordinate offset values in theFloatMap
are multiplied.Min: n/a Max: n/a Default: 1.0 Identity: 1.0
- Default value:
- 1.0
- See Also:
-
scaleY
The scale factor by which all y coordinate offset values in theFloatMap
are multiplied.Min: n/a Max: n/a Default: 1.0 Identity: 1.0
- Default value:
- 1.0
- See Also:
-
offsetX
The offset by which all x coordinate offset values in theFloatMap
are displaced after they are scaled.Min: n/a Max: n/a Default: 0.0 Identity: 0.0
- Default value:
- 0.0
- See Also:
-
offsetY
The offset by which all y coordinate offset values in theFloatMap
are displaced after they are scaled.Min: n/a Max: n/a Default: 0.0 Identity: 0.0
- Default value:
- 0.0
- See Also:
-
wrap
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:
-
-
Constructor Details
-
DisplacementMap
public DisplacementMap()Creates a new instance of DisplacementMap with default parameters. -
DisplacementMap
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 effectoffsetX
- the offset by which all x coordinate offset values in theFloatMap
are displaced after they are scaledoffsetY
- the offset by which all y coordinate offset values in theFloatMap
are displaced after they are scaledscaleX
- the scale factor by which all x coordinate offset values in theFloatMap
are multipliedscaleY
- the scale factor by which all y coordinate offset values in theFloatMap
are multiplied- Since:
- JavaFX 2.1
-
-
Method Details
-
setInput
Sets the value of theinput
property.- Property description:
- The input for this
Effect
. If set tonull
, or left unspecified, a graphical image of theNode
to which theEffect
is attached will be used as the input. - Default value:
- null
- Parameters:
value
- the value for theinput
property- See Also:
-
getInput
Gets the value of theinput
property.- Property description:
- The input for this
Effect
. If set tonull
, or left unspecified, a graphical image of theNode
to which theEffect
is attached will be used as the input. - Default value:
- null
- Returns:
- the value of the
input
property - See Also:
-
inputProperty
The input for thisEffect
. If set tonull
, or left unspecified, a graphical image of theNode
to which theEffect
is attached will be used as the input.- Default value:
- null
- Returns:
- the
input
property - See Also:
-
setMapData
Sets the value of themapData
property.- Property description:
- The map data for this
Effect
. - Default value:
- an empty map
- Parameters:
value
- the value for themapData
property- See Also:
-
getMapData
Gets the value of themapData
property.- Property description:
- The map data for this
Effect
. - Default value:
- an empty map
- Returns:
- the value of the
mapData
property - See Also:
-
mapDataProperty
The map data for thisEffect
.- Default value:
- an empty map
- Returns:
- the
mapData
property - See Also:
-
setScaleX
public final void setScaleX(double value) Sets the value of thescaleX
property.- 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
- Parameters:
value
- the value for thescaleX
property- See Also:
-
getScaleX
public final double getScaleX()Gets the value of thescaleX
property.- 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
- Returns:
- the value of the
scaleX
property - See Also:
-
scaleXProperty
The scale factor by which all x coordinate offset values in theFloatMap
are multiplied.Min: n/a Max: n/a Default: 1.0 Identity: 1.0
- Default value:
- 1.0
- Returns:
- the
scaleX
property - See Also:
-
setScaleY
public final void setScaleY(double value) Sets the value of thescaleY
property.- 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
- Parameters:
value
- the value for thescaleY
property- See Also:
-
getScaleY
public final double getScaleY()Gets the value of thescaleY
property.- 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
- Returns:
- the value of the
scaleY
property - See Also:
-
scaleYProperty
The scale factor by which all y coordinate offset values in theFloatMap
are multiplied.Min: n/a Max: n/a Default: 1.0 Identity: 1.0
- Default value:
- 1.0
- Returns:
- the
scaleY
property - See Also:
-
setOffsetX
public final void setOffsetX(double value) Sets the value of theoffsetX
property.- 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
- Parameters:
value
- the value for theoffsetX
property- See Also:
-
getOffsetX
public final double getOffsetX()Gets the value of theoffsetX
property.- 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
- Returns:
- the value of the
offsetX
property - See Also:
-
offsetXProperty
The offset by which all x coordinate offset values in theFloatMap
are displaced after they are scaled.Min: n/a Max: n/a Default: 0.0 Identity: 0.0
- Default value:
- 0.0
- Returns:
- the
offsetX
property - See Also:
-
setOffsetY
public final void setOffsetY(double value) Sets the value of theoffsetY
property.- 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
- Parameters:
value
- the value for theoffsetY
property- See Also:
-
getOffsetY
public final double getOffsetY()Gets the value of theoffsetY
property.- 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
- Returns:
- the value of the
offsetY
property - See Also:
-
offsetYProperty
The offset by which all y coordinate offset values in theFloatMap
are displaced after they are scaled.Min: n/a Max: n/a Default: 0.0 Identity: 0.0
- Default value:
- 0.0
- Returns:
- the
offsetY
property - See Also:
-
setWrap
public final void setWrap(boolean value) Sets the value of thewrap
property.- 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
- Parameters:
value
- the value for thewrap
property- See Also:
-
isWrap
public final boolean isWrap()Gets the value of thewrap
property.- 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
- Returns:
- the value of the
wrap
property - See Also:
-
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
- Returns:
- the
wrap
property - See Also:
-