Class CanvasSwing
- All Implemented Interfaces:
com.jogamp.nativewindow.awt.AWTPrintLifecycle, com.jogamp.nativewindow.NativeSurfaceHolder, com.jogamp.nativewindow.ScalableSurface, com.jogamp.nativewindow.WindowClosingProtocol, com.jogamp.opengl.awt.AWTGLAutoDrawable, com.jogamp.opengl.awt.ComponentEvents, com.jogamp.opengl.GLAutoDrawable, com.jogamp.opengl.GLDrawable, com.jogamp.opengl.GLSharedContextSetter, ImageObserver, MenuContainer, Serializable, Accessible, ICanvas, INativeCanvas, IScreenCanvas
- Author:
- Martin Pernollet
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategyNested classes/interfaces inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
com.jogamp.nativewindow.awt.AWTPrintLifecycle.ContextNested classes/interfaces inherited from interface com.jogamp.nativewindow.WindowClosingProtocol
com.jogamp.nativewindow.WindowClosingProtocol.WindowClosingMode -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IAnimatorprotected List<ICanvasListener> protected ScheduledExecutorServiceprotected Renderer3dprotected ViewFields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
DEFAULT_PRINT_TILE_SIZEFields inherited from interface com.jogamp.opengl.GLAutoDrawable
SCREEN_CHANGE_ACTION_ENABLEDFields inherited from interface ICanvas
ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINEDFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface com.jogamp.nativewindow.ScalableSurface
AUTOMAX_PIXELSCALE, IDENTITY_PIXELSCALE -
Constructor Summary
ConstructorsConstructorDescriptionCanvasSwing(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci) Initialize a Canvas3d attached to aScene, with a given renderingQuality. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCanvasListener(ICanvasListener listener) voidvoidvoiddispose()protected voidfirePixelScaleChanged(double pixelScaleX, double pixelScaleY) voidForce repaint and ensure that GL2 rendering will occur in the GUI thread, wherever the caller stands.org.jzy3d.maths.Dimensioncom.jogamp.opengl.GLAutoDrawableorg.jzy3d.io.AWTImageExporterdoubleorg.jzy3d.maths.Coord2dPixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.org.jzy3d.maths.Coord2ddoubledoubleintProvide the actual renderer height for the open gl camera settings, which is obtained after a resize event.intProvide the actual renderer width for the open gl camera settings, which is obtained after a resize event.getView()Provide a reference to the View that renders into this canvas.booleanisNative()voidremoveCanvasListener(ICanvasListener listener) voidvoidcom.jogamp.opengl.util.texture.TextureDatavoidscreenshot(File file) voidsetExporter(org.jzy3d.io.AWTImageExporter exporter) voidsetPixelScale(float[] scale) Requests a pixel scale on the underlying JOGL drawable.protected voidMethods inherited from class com.jogamp.opengl.awt.GLJPanel
addGLEventListener, addGLEventListener, addNotify, areAllGLEventListenerInitialized, canSetSurfaceScale, createContext, destroy, display, dispose, disposeGLEventListener, flushGLRunnables, getAnimator, getAutoSwapBufferMode, getChosenGLCapabilities, getContext, getContextCreationFlags, getCurrentSurfaceScale, getCustomPixelBufferProvider, getDefaultCloseOperation, getDelegatedDrawable, getExclusiveContextThread, getFactory, getGL, getGLEventListener, getGLEventListenerCount, getGLEventListenerInitState, getGLProfile, getHandle, getMaximumSurfaceScale, getMinimumSurfaceScale, getNativeSurface, getRequestedGLCapabilities, getRequestedSurfaceScale, getSkipGLOrientationVerticalFlip, getSurfaceHeight, getSurfaceWidth, getTextureUnit, getThreadName, getUpstreamLock, getUpstreamWidget, getUseGLSLVerticalFlip, initializeBackend, invoke, invoke, isGLOriented, isRealized, isThreadGLCapable, paintComponent, print, printComponent, releasePrint, removeGLEventListener, removeNotify, reshape, setAnimator, setAutoSwapBufferMode, setContext, setContextCreationFlags, setDefaultCloseOperation, setExclusiveContextThread, setGL, setGLEventListenerInitState, setOpaque, setPixelBufferProvider, setRealized, setRequestedGLCapabilities, setSharedAutoDrawable, setSharedContext, setSkipGLOrientationVerticalFlip, setSurfaceScale, setTextureUnit, setupPrint, setUseGLSLVerticalFlip, shouldPreserveColorBufferIfTranslucent, swapBuffers, toStringMethods inherited from class JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, printAll, printBorder, printChildren, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycleMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.jogamp.opengl.awt.AWTGLAutoDrawable
repaint, setSizeMethods inherited from interface com.jogamp.opengl.awt.ComponentEvents
addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListenerMethods inherited from interface ICanvas
setPixelScaleMethods inherited from interface IScreenCanvas
display
-
Field Details
-
view
-
renderer
-
animator
-
canvasListeners
-
exec
-
-
Constructor Details
-
CanvasSwing
public CanvasSwing(IChartFactory factory, org.jzy3d.plot3d.rendering.scene.Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci) Initialize a Canvas3d attached to aScene, with a given renderingQuality.
-
-
Method Details
-
watchPixelScale
protected void watchPixelScale() -
getLastRenderingTimeMs
public double getLastRenderingTimeMs()- Specified by:
getLastRenderingTimeMsin interfaceICanvas
-
setPixelScale
public void setPixelScale(float[] scale) Requests a pixel scale on the underlying JOGL drawable.No longer effective on this canvas since JOGL 2.6.0. JOGL commit 900c35c6 (2023-05-15, "No setSurfaceScale(), have AWT toolkit define pixelScale only") made
GLJPanel.setSurfaceScale(float[])andGLJPanel.canSetSurfaceScale()return a hardcodedfalse, because, as its javadoc puts it, "pixelScale is dictated by AWT mechanisms". JOGL now reads the scale from the AWTGraphicsConfigurationinstead of imposing its own, so this call is silently ignored andgetPixelScale()keeps reporting the screen scale.Practical consequence:
Quality.setHiDPI(org.jzy3d.plot3d.rendering.view.HiDPI)withHiDPI.OFFhas no effect here. The chart always renders at the physical pixel density of the screen.The remaining way to get a 1:1 surface is to lower the scale AWT itself reports, with
-Dsun.java2d.uiScale=1. That property is JVM-global, must be set before AWT is initialized, and was verified to work on macOS from JDK 11 through JDK 26.Support of
HiDPI.OFFacross backends:- EmulGL (jGL) : supported
- JOGL AWT (CanvasAWT) and JOGL Swing (CanvasSwing) : not supported since JOGL 2.6.0
- JOGL NEWT :
canSetSurfaceScale()still returns true, but this was not verified end to end - PanamaGL : supported by the canvas, which renders to an FBO it sizes itself, but not
wired to
Qualityyet
- Specified by:
setPixelScalein interfaceICanvas- See Also:
-
getPixelScale
public org.jzy3d.maths.Coord2d getPixelScale()Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.- Specified by:
getPixelScalein interfaceICanvas
-
getPixelScaleJVM
public org.jzy3d.maths.Coord2d getPixelScaleJVM()- Specified by:
getPixelScaleJVMin interfaceICanvas
-
getPixelScaleX
public double getPixelScaleX() -
getPixelScaleY
public double getPixelScaleY() -
getAnimation
- Specified by:
getAnimationin interfaceIScreenCanvas
-
dispose
-
forceRepaint
public void forceRepaint()Force repaint and ensure that GL2 rendering will occur in the GUI thread, wherever the caller stands.- Specified by:
forceRepaintin interfaceICanvas
-
screenshot
- Specified by:
screenshotin interfaceICanvas- Throws:
IOException
-
screenshot
public com.jogamp.opengl.util.texture.TextureData screenshot()- Specified by:
screenshotin interfaceICanvas- Specified by:
screenshotin interfaceINativeCanvas
-
getDrawable
public com.jogamp.opengl.GLAutoDrawable getDrawable()- Specified by:
getDrawablein interfaceINativeCanvas
-
getView
-
getRendererWidth
public int getRendererWidth()Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.- Specified by:
getRendererWidthin interfaceICanvas
-
getRendererHeight
public int getRendererHeight()Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.- Specified by:
getRendererHeightin interfaceICanvas
-
getDimension
public org.jzy3d.maths.Dimension getDimension()- Specified by:
getDimensionin interfaceICanvas
-
getRenderer
- Specified by:
getRendererin interfaceINativeCanvas
-
getDebugInfo
- Specified by:
getDebugInfoin interfaceICanvas
-
addMouseController
- Specified by:
addMouseControllerin interfaceICanvas
-
addKeyController
- Specified by:
addKeyControllerin interfaceICanvas
-
removeMouseController
- Specified by:
removeMouseControllerin interfaceICanvas
-
removeKeyController
- Specified by:
removeKeyControllerin interfaceICanvas
-
addCanvasListener
- Specified by:
addCanvasListenerin interfaceICanvas
-
removeCanvasListener
- Specified by:
removeCanvasListenerin interfaceICanvas
-
getCanvasListeners
- Specified by:
getCanvasListenersin interfaceICanvas
-
firePixelScaleChanged
protected void firePixelScaleChanged(double pixelScaleX, double pixelScaleY) -
isNative
-
getExporter
public org.jzy3d.io.AWTImageExporter getExporter() -
setExporter
public void setExporter(org.jzy3d.io.AWTImageExporter exporter)
-