/* * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.javafx.scene; import javafx.geometry.Point2D; import javafx.geometry.Point3D; import javafx.scene.Camera; import javafx.scene.Node; /** * Used to access internal methods of Camera. */ public class CameraHelper { private static CameraAccessor cameraAccessor; static { forceInit(Camera.class); } private CameraHelper() { } public static Point2D project(Camera camera, Point3D p) { return cameraAccessor.project(camera, p); } public static Point2D pickNodeXYPlane(Camera camera, Node node, double x, double y) { return cameraAccessor.pickNodeXYPlane(camera, node, x, y); } public static Point3D pickProjectPlane(Camera camera, double x, double y) { return cameraAccessor.pickProjectPlane(camera, x, y); } public static void setCameraAccessor(final CameraAccessor newAccessor) { if (cameraAccessor != null) { throw new IllegalStateException(); } cameraAccessor = newAccessor; } public interface CameraAccessor { Point2D project(Camera camera, Point3D p); Point2D pickNodeXYPlane(Camera camera, Node node, double x, double y); Point3D pickProjectPlane(Camera camera, double x, double y); } private static void forceInit(final Class classToInit) { try { Class.forName(classToInit.getName(), true, classToInit.getClassLoader()); } catch (final ClassNotFoundException e) { throw new AssertionError(e); // Can't happen } } }