modules/graphics/src/test/java/test/javafx/scene/Mouse3DTest.java
Print this page
rev 9250 : 8134762: Refactor Javafx graphics module tests for clear separation of tests
Reviewed-by:
*** 21,39 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package javafx.scene;
import com.sun.javafx.geom.PickRay;
! import com.sun.javafx.test.MouseEventGenerator;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.geometry.Point2D;
import javafx.geometry.Point3D;
import javafx.scene.input.MouseDragEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.PickResult;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Box;
--- 21,50 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package test.javafx.scene;
import com.sun.javafx.geom.PickRay;
! import test.com.sun.javafx.test.MouseEventGenerator;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.geometry.Point2D;
import javafx.geometry.Point3D;
+ import javafx.scene.Camera;
+ import javafx.scene.CameraShim;
+ import javafx.scene.DepthTest;
+ import javafx.scene.Group;
+ import javafx.scene.Node;
+ import javafx.scene.ParallelCamera;
+ import javafx.scene.Parent;
+ import javafx.scene.ParentShim;
+ import javafx.scene.PerspectiveCamera;
+ import javafx.scene.Scene;
+ import javafx.scene.SubScene;
import javafx.scene.input.MouseDragEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.PickResult;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Box;
*** 64,74 ****
@Test
public void shouldComputeCorrectPerspectivePickRay() {
Camera cam = new PerspectiveCamera();
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(10, 20, null);
assertEquals(PERSPECTIVE_CAMERA_X, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Y, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
--- 75,85 ----
@Test
public void shouldComputeCorrectPerspectivePickRay() {
Camera cam = new PerspectiveCamera();
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,10, 20, null);
assertEquals(PERSPECTIVE_CAMERA_X, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Y, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
*** 78,88 ****
@Test
public void shouldComputeCorrectPerspectivePickRayWithFixedEye() {
Camera cam = new PerspectiveCamera(true);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(10, 20, null);
assertEquals(0.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(0.0, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
--- 89,99 ----
@Test
public void shouldComputeCorrectPerspectivePickRayWithFixedEye() {
Camera cam = new PerspectiveCamera(true);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,10, 20, null);
assertEquals(0.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(0.0, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
*** 94,104 ****
Camera cam = new ParallelCamera();
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(100, 200, null);
assertEquals(-PERSPECTIVE_CAMERA_Z * 100, pickRay.getNearClip(), 0.01);
assertEquals(-PERSPECTIVE_CAMERA_Z * 200, pickRay.getFarClip(), 0.01);
}
--- 105,115 ----
Camera cam = new ParallelCamera();
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,100, 200, null);
assertEquals(-PERSPECTIVE_CAMERA_Z * 100, pickRay.getNearClip(), 0.01);
assertEquals(-PERSPECTIVE_CAMERA_Z * 200, pickRay.getFarClip(), 0.01);
}
*** 107,117 ****
Camera cam = new PerspectiveCamera();
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(100, 200, null);
double xd = PERSPECTIVE_CAMERA_X - 100;
double yd = PERSPECTIVE_CAMERA_Y - 200;
double pd = Math.sqrt(xd * xd + yd * yd);
double len = Math.sqrt(PERSPECTIVE_CAMERA_Z * PERSPECTIVE_CAMERA_Z + pd * pd);
--- 118,128 ----
Camera cam = new PerspectiveCamera();
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,100, 200, null);
double xd = PERSPECTIVE_CAMERA_X - 100;
double yd = PERSPECTIVE_CAMERA_Y - 200;
double pd = Math.sqrt(xd * xd + yd * yd);
double len = Math.sqrt(PERSPECTIVE_CAMERA_Z * PERSPECTIVE_CAMERA_Z + pd * pd);
*** 125,135 ****
Camera cam = new PerspectiveCamera(true);
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(100, 200, null);
assertEquals(104.39, pickRay.getNearClip(), 0.01);
assertEquals(208.78, pickRay.getFarClip(), 0.01);
}
@Test
--- 136,146 ----
Camera cam = new PerspectiveCamera(true);
cam.setNearClip(100.0);
cam.setFarClip(200.0);
scene(group(), cam, true);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,100, 200, null);
assertEquals(104.39, pickRay.getNearClip(), 0.01);
assertEquals(208.78, pickRay.getFarClip(), 0.01);
}
@Test
*** 137,147 ****
Camera cam = new PerspectiveCamera();
scene(group(cam), cam, true);
cam.setTranslateX(50);
cam.getParent().setTranslateY(30);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(10, 20, null);
assertEquals(50 + PERSPECTIVE_CAMERA_X, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(30 + PERSPECTIVE_CAMERA_Y, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
--- 148,158 ----
Camera cam = new PerspectiveCamera();
scene(group(cam), cam, true);
cam.setTranslateX(50);
cam.getParent().setTranslateY(30);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,10, 20, null);
assertEquals(50 + PERSPECTIVE_CAMERA_X, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(30 + PERSPECTIVE_CAMERA_Y, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.00001);
assertEquals(10 - PERSPECTIVE_CAMERA_X, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(20 - PERSPECTIVE_CAMERA_Y, pickRay.getDirectionNoClone().y, 0.00001);
*** 150,160 ****
@Test
public void shouldComputeCorrectParallelPickRay() {
Camera cam = new ParallelCamera();
scene(group(), cam, true);
! PickRay pickRay = cam.computePickRay(10, 20, null);
assertEquals(10.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(20.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.1);
assertEquals(0.0, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getDirectionNoClone().y, 0.00001);
--- 161,171 ----
@Test
public void shouldComputeCorrectParallelPickRay() {
Camera cam = new ParallelCamera();
scene(group(), cam, true);
! PickRay pickRay = CameraShim.computePickRay(cam,10, 20, null);
assertEquals(10.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(20.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.1);
assertEquals(0.0, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getDirectionNoClone().y, 0.00001);
*** 166,176 ****
Camera cam = new ParallelCamera();
scene(group(cam), cam, true);
cam.setTranslateX(50);
cam.getParent().setTranslateY(30);
cam.impl_updatePeer();
! PickRay pickRay = cam.computePickRay(10, 20, null);
assertEquals(60.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(50.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.1);
assertEquals(0.0, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getDirectionNoClone().y, 0.00001);
--- 177,187 ----
Camera cam = new ParallelCamera();
scene(group(cam), cam, true);
cam.setTranslateX(50);
cam.getParent().setTranslateY(30);
cam.impl_updatePeer();
! PickRay pickRay = CameraShim.computePickRay(cam,10, 20, null);
assertEquals(60.0, pickRay.getOriginNoClone().x, 0.00001);
assertEquals(50.0, pickRay.getOriginNoClone().y, 0.00001);
assertEquals(PERSPECTIVE_CAMERA_Z, pickRay.getOriginNoClone().z, 0.1);
assertEquals(0.0, pickRay.getDirectionNoClone().x, 0.00001);
assertEquals(0.0, pickRay.getDirectionNoClone().y, 0.00001);
*** 2329,2339 ****
cam.setTranslateX(-43);
camGroup.setTranslateX(23);
cam.impl_updatePeer();
Scene s = scene(group(b), cam, true);
! s.getRoot().getChildren().add(camGroup);
s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
MouseEvent e = me.event;
assertNotNull(e);
assertCoordinates(e, 30, 40, 50, 70.638298, -85.106383);
--- 2340,2350 ----
cam.setTranslateX(-43);
camGroup.setTranslateX(23);
cam.impl_updatePeer();
Scene s = scene(group(b), cam, true);
! ParentShim.getChildren(s.getRoot()).add(camGroup);
s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
MouseEvent e = me.event;
assertNotNull(e);
assertCoordinates(e, 30, 40, 50, 70.638298, -85.106383);
*** 2353,2363 ****
cam.setTranslateX(-43);
camGroup.setTranslateX(23);
cam.impl_updatePeer();
Scene s = scene(group(b), cam, true);
! s.getRoot().getChildren().add(camGroup);
s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
MouseEvent e = me.event;
assertNotNull(e);
assertCoordinates(e, 30, 40, 10, 40, -200);
--- 2364,2374 ----
cam.setTranslateX(-43);
camGroup.setTranslateX(23);
cam.impl_updatePeer();
Scene s = scene(group(b), cam, true);
! ParentShim.getChildren(s.getRoot()).add(camGroup);
s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
MouseEvent e = me.event;
assertNotNull(e);
assertCoordinates(e, 30, 40, 10, 40, -200);
*** 2372,2389 ****
Group root = new Group();
Scene scene = new Scene(root, 800, 800, false);
Group subRoot = new Group();
SubScene sub = new SubScene(subRoot, 700, 700, true, null);
! root.getChildren().add(sub);
PerspectiveCamera cam = new PerspectiveCamera(true);
sub.setCamera(cam);
Box b = new Box();
b.setTranslateZ(1.2);
! subRoot.getChildren().add(b);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
--- 2383,2400 ----
Group root = new Group();
Scene scene = new Scene(root, 800, 800, false);
Group subRoot = new Group();
SubScene sub = new SubScene(subRoot, 700, 700, true, null);
! ParentShim.getChildren(root).add(sub);
PerspectiveCamera cam = new PerspectiveCamera(true);
sub.setCamera(cam);
Box b = new Box();
b.setTranslateZ(1.2);
! ParentShim.getChildren(subRoot).add(b);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
*** 2411,2422 ****
* Moves the camera so that picking on point
* [PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y] results in pick ray
* with origin [x, y, -1000] and direction [0, 0, 1000].
*/
private void makeParallel(Scene s, double x, double y) {
! if (!s.getRoot().getChildren().contains(s.getCamera())) {
! s.getRoot().getChildren().add(s.getCamera());
}
s.getCamera().setTranslateX(x - PERSPECTIVE_CAMERA_X);
s.getCamera().setTranslateY(y - PERSPECTIVE_CAMERA_Y);
s.getCamera().impl_updatePeer();
}
--- 2422,2433 ----
* Moves the camera so that picking on point
* [PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y] results in pick ray
* with origin [x, y, -1000] and direction [0, 0, 1000].
*/
private void makeParallel(Scene s, double x, double y) {
! if (!ParentShim.getChildren(s.getRoot()).contains(s.getCamera())) {
! ParentShim.getChildren(s.getRoot()).add(s.getCamera());
}
s.getCamera().setTranslateX(x - PERSPECTIVE_CAMERA_X);
s.getCamera().setTranslateY(y - PERSPECTIVE_CAMERA_Y);
s.getCamera().impl_updatePeer();
}