Class NodeUtils
NodeUtils
class contains utility methods for working with JavaFX:
- transforming
IGeometry
s from/to different JavaFX coordinate systems (localToParent(Node, IGeometry)
,localToScene(Node, IGeometry)
,localToScene(Node, Point)
,parentToLocal(Node, IGeometry)
,sceneToLocal(Node, IGeometry)
) - determining the actual local-to-scene or scene-to-local transform for a
JavaFX
Node
(getLocalToSceneTx(Node)
,getSceneToLocalTx(Node)
) - perform picking of
Node
s at a specific position within the JavaFX scene graph (getNodesAt(Node, double, double)
)
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
equals
(javafx.scene.transform.Affine a1, javafx.scene.transform.Affine a2) Returnstrue
if the givenAffine
s are equal.static IGeometry
getGeometricOutline
(javafx.scene.Node visual) Returns anIGeometry
that corresponds whose outline represents the geometric outline of the givenNode
, excluding its stroke.static AffineTransform
getLocalToSceneTx
(javafx.scene.Node node) Returns anAffineTransform
which represents the transformation matrix to transform geometries from the local coordinate system of the givenNode
into the coordinate system of theScene
.static javafx.scene.Node
getNearestCommonAncestor
(javafx.scene.Node source, javafx.scene.Node target) Computes the nearest common ancestor for two given nodes.static List<javafx.scene.Node>
getNodesAt
(javafx.scene.Node root, double sceneX, double sceneY) Performs picking on the scene graph beginning at the specified root node and processing its transitive children.static IGeometry
getResizedToShapeBounds
(javafx.scene.Node visual, IGeometry geometry) Creates a copy of the givenIGeometry
and resizes it to fit the (corrected) layout-bounds (seegetShapeBounds(Node)
) of the givenNode
.static AffineTransform
getSceneToLocalTx
(javafx.scene.Node node) Returns the scene-to-local transform for the givenNode
.static Rectangle
getShapeBounds
(javafx.scene.Node node) Returns the layout-bounds of the givenNode
, which might be adjusted to ensure that it exactly fits the visualization.static IGeometry
getShapeOutline
(javafx.scene.Node node) Creates a geometry whose outline represents the outline of the givenNode
, including its stroke.static boolean
isNested
(javafx.scene.Parent parent, javafx.scene.Node node) Returns true if the givenNode
is contained within the visual hierarchy of the givenParent
.static IGeometry
localToParent
(javafx.scene.Node n, IGeometry g) Transforms the givenIGeometry
from the local coordinate system of the givenNode
into the coordinate system of theNode
's parent.static Point
localToParent
(javafx.scene.Node n, Point p) Transforms the givenPoint
from the local coordinate system of the givenNode
into the coordinate system of theNode
's parent.static IGeometry
localToScene
(javafx.scene.Node n, IGeometry g) Transforms the givenIGeometry
from the local coordinate system of the givenNode
into scene coordinates.static Point
localToScene
(javafx.scene.Node n, Point p) Transforms the givenPoint
from the local coordinate system of the givenNode
into scene coordinates.static IGeometry
parentToLocal
(javafx.scene.Node n, IGeometry g) Transforms the givenIGeometry
from the parent coordinate system of the givenNode
into the local coordinate system of theNode
.static Point
parentToLocal
(javafx.scene.Node n, Point p) Transforms the givenPoint
from the parent coordinate system of the givenNode
into the local coordinate system of theNode
.static IGeometry
sceneToLocal
(javafx.scene.Node n, IGeometry g) Transforms the givenIGeometry
from scene coordinates to the local coordinate system of the givenNode
.static Point
sceneToLocal
(javafx.scene.Node n, Point p) Transforms the givenPoint
from scene coordinates to the local coordinate system of the givenNode
.static javafx.scene.transform.Affine
setAffine
(javafx.scene.transform.Affine dst, javafx.scene.transform.Affine src) Assigns the transformation values of the srcAffine
to the dstAffine
.
-
Constructor Details
-
NodeUtils
public NodeUtils()
-
-
Method Details
-
equals
public static boolean equals(javafx.scene.transform.Affine a1, javafx.scene.transform.Affine a2) Returnstrue
if the givenAffine
s are equal. Otherwise returnsfalse
.- Parameters:
a1
- The first operand.a2
- The second operand.- Returns:
true
if the givenAffine
s are equal, otherwisefalse
.
-
getGeometricOutline
Returns anIGeometry
that corresponds whose outline represents the geometric outline of the givenNode
, excluding its stroke.The
IGeometry
is specified within the local coordinate system of the givenNode
.The following
Node
s are supported:Connection
GeometryNode
Arc
Circle
CubicCurve
Ellipse
Line
Path
Polygon
Polyline
QuadCurve
Rectangle
- Parameters:
visual
- TheNode
of which the geometric outline is returned.- Returns:
- An
IGeometry
that corresponds to the geometric outline of the givenNode
. - Throws:
IllegalArgumentException
- if the givenNode
is not supported.
-
getLocalToSceneTx
Returns anAffineTransform
which represents the transformation matrix to transform geometries from the local coordinate system of the givenNode
into the coordinate system of theScene
.JavaFX
Node
provides a (lazily computed) local-to-scene-transform property which we could access to get that transform. Unfortunately, this property is not updated correctly, i.e. its value can differ from the actual local-to-scene-transform. Therefore, we compute the local-to-scene-transform for the given node here by concatenating the local-to-parent-transforms along the hierarchy.Note that in situations where you do not need the actual transform, but instead perform a transformation, you can use the
Node#localToScene(...)
methods on the node directly, because it does not make use of the local-to-scene-transform property, but uses localToParent() internally.- Parameters:
node
- The JavaFXNode
for which the local-to-scene transformation matrix is to be computed.- Returns:
- An
AffineTransform
representing the local-to-scene transformation matrix for the givenNode
.
-
getNearestCommonAncestor
public static javafx.scene.Node getNearestCommonAncestor(javafx.scene.Node source, javafx.scene.Node target) Computes the nearest common ancestor for two given nodes.- Parameters:
source
- The first node.target
- The second node.- Returns:
- The nearest common ancestor in the scene graph.
-
getNodesAt
public static List<javafx.scene.Node> getNodesAt(javafx.scene.Node root, double sceneX, double sceneY) Performs picking on the scene graph beginning at the specified root node and processing its transitive children.- Parameters:
sceneX
- The x-coordinate of the position to pick nodes at, interpreted in scene coordinate space.sceneY
- The y-coordinate of the position to pick nodes at, interpreted in scene coordinate space.root
- The root node at which to start with picking- Returns:
- A list of
Node
s which contain the the given coordinate.
-
getResizedToShapeBounds
Creates a copy of the givenIGeometry
and resizes it to fit the (corrected) layout-bounds (seegetShapeBounds(Node)
) of the givenNode
. The new, resizedIGeometry
is returned. -
getSceneToLocalTx
Returns the scene-to-local transform for the givenNode
.- Parameters:
node
- TheNode
for which the scene-to-local transform is returned.- Returns:
- The scene-to-local transform for the given
Node
.
-
getShapeBounds
Returns the layout-bounds of the givenNode
, which might be adjusted to ensure that it exactly fits the visualization.- Parameters:
node
- TheNode
to retrieve the (corrected) layout-bounds of.- Returns:
- A
Rectangle
representing the (corrected) layout-bounds.
-
getShapeOutline
Creates a geometry whose outline represents the outline of the givenNode
, including its stroke.The
IGeometry
is specified within the local coordinate system of the givenNode
.- Parameters:
node
- The node to infer an outline geometry for.- Returns:
- An
IGeometry
from which the outline may be retrieved.
-
isNested
public static boolean isNested(javafx.scene.Parent parent, javafx.scene.Node node) Returns true if the givenNode
is contained within the visual hierarchy of the givenParent
.- Parameters:
parent
- TheParent
, whose hierarchy is to be searched.node
- TheNode
to test.- Returns:
true
if the given node is contained in the visual hierarchy of theParent
,false
otherwise.
-
localToParent
Transforms the givenIGeometry
from the local coordinate system of the givenNode
into the coordinate system of theNode
's parent. -
localToParent
Transforms the givenPoint
from the local coordinate system of the givenNode
into the coordinate system of theNode
's parent. -
localToScene
Transforms the givenIGeometry
from the local coordinate system of the givenNode
into scene coordinates. -
localToScene
Transforms the givenPoint
from the local coordinate system of the givenNode
into scene coordinates. -
parentToLocal
Transforms the givenIGeometry
from the parent coordinate system of the givenNode
into the local coordinate system of theNode
. -
parentToLocal
Transforms the givenPoint
from the parent coordinate system of the givenNode
into the local coordinate system of theNode
. -
sceneToLocal
Transforms the givenIGeometry
from scene coordinates to the local coordinate system of the givenNode
. -
sceneToLocal
Transforms the givenPoint
from scene coordinates to the local coordinate system of the givenNode
. -
setAffine
public static javafx.scene.transform.Affine setAffine(javafx.scene.transform.Affine dst, javafx.scene.transform.Affine src) Assigns the transformation values of the srcAffine
to the dstAffine
.- Parameters:
dst
- The destinationAffine
.src
- The sourceAffine
.- Returns:
- The destination
Affine
for convenience.
-