Class PanamaGLJavaFXCanvas

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.layout.Pane
javafx.scene.layout.BorderPane
org.jzy3d.plot3d.rendering.canvas.PanamaGLJavaFXCanvas
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget, ICanvas, IPanamaGLCanvas, IScreenCanvas

public class PanamaGLJavaFXCanvas extends javafx.scene.layout.BorderPane implements IPanamaGLCanvas
A JavaFX BorderPane hosting a PanamaGL-backed Canvas. Ships the very same PanamaGLCanvasSupport plumbing as the Swing and SWT panels, while exposing itself as a regular JavaFX Node so it can be dropped into any scene graph.
  • Property Summary

    Properties inherited from class javafx.scene.layout.BorderPane

    bottom, center, left, right, top

    Properties inherited from class javafx.scene.layout.Region

    background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width

    Properties inherited from class javafx.scene.Parent

    needsLayout

    Properties inherited from class javafx.scene.Node

    accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
    protected ResizableCanvas
     
     

    Fields inherited from class javafx.scene.layout.Region

    USE_COMPUTED_SIZE, USE_PREF_SIZE

    Fields inherited from class javafx.scene.Node

    BASELINE_OFFSET_SAME_AS_HEIGHT
  • Constructor Summary

    Constructors
    Constructor
    Description
    PanamaGLJavaFXCanvas(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, ResizableCanvas fxCanvas, panamagl.canvas.GLCanvasJFX glCanvas)
    Advanced / test-friendly constructor: inject a pre-built GLCanvasJFX wrapping the supplied ResizableCanvas.
    PanamaGLJavaFXCanvas(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, panamagl.factory.PanamaGLFactory panamaGLFactory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    void
     
    void
    The JavaFX input model does not rely on java.awt.event.MouseListener; a JavaFX controller registers itself directly on the inner JavaFX node.
    void
     
    void
     
    protected void
    firePixelScaleChanged(double pixelScaleX, double pixelScaleY)
     
    void
     
     
     
     
    org.jzy3d.maths.Dimension
     
    panamagl.canvas.GLCanvas
     
    panamagl.GLEventListener
     
    double
     
    javafx.scene.Node
    Return the underlying JavaFX Node that actually displays the 3D scene.
    org.jzy3d.maths.Coord2d
     
    org.jzy3d.maths.Coord2d
     
    int
     
    int
    Renderer dimensions are reported in physical pixels, matching the FBO size that the underlying GLCanvasJFX allocates.
     
    boolean
     
    void
     
    void
     
    void
     
     
    void
     
    void
    setGLEventListener(panamagl.GLEventListener listener)
     
    void
    setPixelScale(float[] scale)
     

    Methods inherited from class javafx.scene.layout.BorderPane

    bottomProperty, centerProperty, clearConstraints, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getAlignment, getBottom, getCenter, getContentBias, getLeft, getMargin, getRight, getTop, layoutChildren, leftProperty, rightProperty, setAlignment, setBottom, setCenter, setLeft, setMargin, setRight, setTop, topProperty

    Methods inherited from class javafx.scene.layout.Pane

    getChildren

    Methods inherited from class javafx.scene.layout.Region

    backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, getBackground, getBorder, getClassCssMetaData, getCssMetaData, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty

    Methods inherited from class javafx.scene.Parent

    getBaselineOffset, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestLayout, requestParentLayout, setNeedsLayout, updateBounds

    Methods inherited from class javafx.scene.Node

    accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface ICanvas

    setPixelScale

    Methods inherited from interface javafx.css.Styleable

    getStyleableNode
  • Field Details

  • Constructor Details

    • PanamaGLJavaFXCanvas

      public PanamaGLJavaFXCanvas(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, panamagl.factory.PanamaGLFactory panamaGLFactory)
    • PanamaGLJavaFXCanvas

      public PanamaGLJavaFXCanvas(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, ResizableCanvas fxCanvas, panamagl.canvas.GLCanvasJFX glCanvas)
      Advanced / test-friendly constructor: inject a pre-built GLCanvasJFX wrapping the supplied ResizableCanvas. Use the main constructor in application code.
  • Method Details

    • firePixelScaleChanged

      protected void firePixelScaleChanged(double pixelScaleX, double pixelScaleY)
    • getNode

      public javafx.scene.Node getNode()
      Return the underlying JavaFX Node that actually displays the 3D scene.
    • getGLCanvas

      public panamagl.canvas.GLCanvas getGLCanvas()
      Specified by:
      getGLCanvas in interface IPanamaGLCanvas
    • getGLEventListener

      public panamagl.GLEventListener getGLEventListener()
      Specified by:
      getGLEventListener in interface IPanamaGLCanvas
    • setGLEventListener

      public void setGLEventListener(panamagl.GLEventListener listener)
      Specified by:
      setGLEventListener in interface IPanamaGLCanvas
    • isNative

      public boolean isNative()
      Specified by:
      isNative in interface ICanvas
    • getView

      public View getView()
      Specified by:
      getView in interface ICanvas
    • getRendererWidth

      public int getRendererWidth()
      Renderer dimensions are reported in physical pixels, matching the FBO size that the underlying GLCanvasJFX allocates. View uses these values to build the ViewportConfiguration that drives glViewport; on a Retina display the FBO is 2W x 2H so we must return 2W and 2H here, otherwise glViewport(0, 0, W, H) only fills the bottom-left quadrant of the FBO.

      When HiDPI is disabled (Jzy3D's Quality.preserveViewportSize=true), the FBO is already in logical pixels and getPhysicalWidth() returns the logical width.

      Specified by:
      getRendererWidth in interface ICanvas
    • getRendererHeight

      public int getRendererHeight()
      Specified by:
      getRendererHeight in interface ICanvas
    • screenshot

      public void screenshot(File file) throws IOException
      Specified by:
      screenshot in interface ICanvas
      Throws:
      IOException
    • screenshot

      public Object screenshot()
      Specified by:
      screenshot in interface ICanvas
    • display

      public void display()
      Specified by:
      display in interface IScreenCanvas
    • forceRepaint

      public void forceRepaint()
      Specified by:
      forceRepaint in interface ICanvas
    • dispose

      public void dispose()
      Specified by:
      dispose in interface ICanvas
    • addMouseController

      public void addMouseController(Object o)
      The JavaFX input model does not rely on java.awt.event.MouseListener; a JavaFX controller registers itself directly on the inner JavaFX node. This method is kept to honor IScreenCanvas but is a no-op: pass the node of this canvas to the controller constructor instead.
      Specified by:
      addMouseController in interface ICanvas
    • addKeyController

      public void addKeyController(Object o)
      Specified by:
      addKeyController in interface ICanvas
    • removeMouseController

      public void removeMouseController(Object o)
      Specified by:
      removeMouseController in interface ICanvas
    • removeKeyController

      public void removeKeyController(Object o)
      Specified by:
      removeKeyController in interface ICanvas
    • getDebugInfo

      public String getDebugInfo()
      Specified by:
      getDebugInfo in interface ICanvas
    • setPixelScale

      public void setPixelScale(float[] scale)
      Specified by:
      setPixelScale in interface ICanvas
      See Also:
      • invalid reference
        PanamaGLSwingCanvas#setPixelScale(float[])
    • getPixelScale

      public org.jzy3d.maths.Coord2d getPixelScale()
      Specified by:
      getPixelScale in interface ICanvas
    • getPixelScaleJVM

      public org.jzy3d.maths.Coord2d getPixelScaleJVM()
      Specified by:
      getPixelScaleJVM in interface ICanvas
    • getLastRenderingTimeMs

      public double getLastRenderingTimeMs()
      Specified by:
      getLastRenderingTimeMs in interface ICanvas
    • addCanvasListener

      public void addCanvasListener(ICanvasListener listener)
      Specified by:
      addCanvasListener in interface ICanvas
    • removeCanvasListener

      public void removeCanvasListener(ICanvasListener listener)
      Specified by:
      removeCanvasListener in interface ICanvas
    • getCanvasListeners

      public List<ICanvasListener> getCanvasListeners()
      Specified by:
      getCanvasListeners in interface ICanvas
    • getAnimation

      public IAnimator getAnimation()
      Specified by:
      getAnimation in interface IScreenCanvas
    • getDimension

      public org.jzy3d.maths.Dimension getDimension()
      Specified by:
      getDimension in interface ICanvas