Class CanvasSwing
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- com.jogamp.opengl.awt.GLJPanel
-
- org.jzy3d.plot3d.rendering.canvas.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
public class CanvasSwing extends com.jogamp.opengl.awt.GLJPanel implements IScreenCanvas, INativeCanvas
- Author:
- Martin Pernollet
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description protected IAnimatoranimatorprotected List<ICanvasListener>canvasListenersprotected ScheduledExecutorServiceexecprotected Renderer3drendererprotected Viewview-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
DEFAULT_PRINT_TILE_SIZE
-
Fields inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas
ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINED
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor Description CanvasSwing(IChartFactory factory, Scene scene, Quality quality)CanvasSwing(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)CanvasSwing(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci, boolean traceGL, boolean debugGL)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCanvasListener(ICanvasListener listener)voidaddKeyController(Object o)A generic interface for mouse listener to remain Windowing toolkit independant.voidaddMouseController(Object o)A generic interface for mouse listener to remain Windowing toolkit independant.voiddispose()Performs all required cleanup when destroying a Canvas.protected voidfirePixelScaleChanged(double pixelScaleX, double pixelScaleY)voidforceRepaint()Force repaint and ensure that GL2 rendering will occur in the GUI thread, wherever the caller stands.IAnimatorgetAnimation()List<ICanvasListener>getCanvasListeners()StringgetDebugInfo()com.jogamp.opengl.GLAutoDrawablegetDrawable()Returns the GLDrawable associated with the canvasdoublegetLastRenderingTimeMs()Coord2dgetPixelScale()Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.doublegetPixelScaleX()doublegetPixelScaleY()Renderer3dgetRenderer()intgetRendererHeight()Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.intgetRendererWidth()Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.ViewgetView()Provide a reference to the View that renders into this canvas.voidremoveCanvasListener(ICanvasListener listener)voidremoveKeyController(Object o)A generic interface for key listener to remain Windowing toolkit independant. * Implementation of this method should simply cast the input assuming it will correspond to canvas-compatible key listener.voidremoveMouseController(Object o)A generic interface for key listener to remain Windowing toolkit independant.com.jogamp.opengl.util.texture.TextureDatascreenshot()Returns an image with the current renderer's sizevoidscreenshot(File file)voidsetPixelScale(float[] scale)Defines pixel scale.protected voidwatchPixelScale()-
Methods inherited from class com.jogamp.opengl.awt.GLJPanel
addGLEventListener, addGLEventListener, addNotify, areAllGLEventListenerInitialized, 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, 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, shouldPreserveColorBufferIfTranslucent, swapBuffers, toString
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.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, update
-
Methods inherited from class java.awt.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, validateTree
-
Methods inherited from class java.awt.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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods 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, removePropertyChangeListener
-
Methods inherited from interface org.jzy3d.plot3d.rendering.canvas.IScreenCanvas
display
-
-
-
-
Field Detail
-
view
protected View view
-
renderer
protected Renderer3d renderer
-
animator
protected IAnimator animator
-
canvasListeners
protected List<ICanvasListener> canvasListeners
-
exec
protected ScheduledExecutorService exec
-
-
Constructor Detail
-
CanvasSwing
public CanvasSwing(IChartFactory factory, Scene scene, Quality quality)
-
CanvasSwing
public CanvasSwing(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
-
CanvasSwing
public CanvasSwing(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci, boolean traceGL, boolean debugGL)
-
-
Method Detail
-
watchPixelScale
protected void watchPixelScale()
-
getLastRenderingTimeMs
public double getLastRenderingTimeMs()
- Specified by:
getLastRenderingTimeMsin interfaceICanvas
-
setPixelScale
public void setPixelScale(float[] scale)
Description copied from interface:ICanvasDefines pixel scale. On MacOS Retina displays, a X*Y chart uses a (X*2)*(Y*2) viewport. This makes some calculation based on viewport (such asCamera.screenToModel(IPainter, org.jzy3d.maths.Coord3d)output wrong result. When running on Retina display, those two options fixed buggy mouse selections on Retina:- setPixelScale(new float[]{0.5f,0.5f})
- setPixelScale(new float[] { ScalableSurface.IDENTITY_PIXELSCALE,
ScalableSurface.IDENTITY_PIXELSCALE })
- Specified by:
setPixelScalein interfaceICanvas
-
getPixelScale
public Coord2d getPixelScale()
Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.- Specified by:
getPixelScalein interfaceICanvas
-
getPixelScaleX
public double getPixelScaleX()
-
getPixelScaleY
public double getPixelScaleY()
-
getAnimation
public IAnimator getAnimation()
- Specified by:
getAnimationin interfaceIScreenCanvas
-
dispose
public void dispose()
Description copied from interface:ICanvasPerforms all required cleanup when destroying a Canvas.
-
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
public void screenshot(File file) throws IOException
- Specified by:
screenshotin interfaceICanvas- Throws:
IOException
-
screenshot
public com.jogamp.opengl.util.texture.TextureData screenshot()
Description copied from interface:INativeCanvasReturns an image with the current renderer's size- Specified by:
screenshotin interfaceICanvas- Specified by:
screenshotin interfaceINativeCanvas
-
getDrawable
public com.jogamp.opengl.GLAutoDrawable getDrawable()
Description copied from interface:INativeCanvasReturns the GLDrawable associated with the canvas- Specified by:
getDrawablein interfaceINativeCanvas
-
getView
public View getView()
Provide a reference to the View that renders into this canvas.
-
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
-
getRenderer
public Renderer3d getRenderer()
- Specified by:
getRendererin interfaceINativeCanvas
-
getDebugInfo
public String getDebugInfo()
- Specified by:
getDebugInfoin interfaceICanvas
-
addMouseController
public void addMouseController(Object o)
Description copied from interface:ICanvasA generic interface for mouse listener to remain Windowing toolkit independant. Implementation of this method should simply cast the input assuming it will correspond to canvas-compatible mouse listener.- Specified by:
addMouseControllerin interfaceICanvas
-
addKeyController
public void addKeyController(Object o)
Description copied from interface:ICanvasA generic interface for mouse listener to remain Windowing toolkit independant. Implementation of this method should simply cast the input assuming it will correspond to canvas-compatible mouse listener.- Specified by:
addKeyControllerin interfaceICanvas
-
removeMouseController
public void removeMouseController(Object o)
Description copied from interface:ICanvasA generic interface for key listener to remain Windowing toolkit independant. Implementation of this method should simply cast the input assuming it will correspond to canvas-compatible key listener.- Specified by:
removeMouseControllerin interfaceICanvas
-
removeKeyController
public void removeKeyController(Object o)
Description copied from interface:ICanvasA generic interface for key listener to remain Windowing toolkit independant. * Implementation of this method should simply cast the input assuming it will correspond to canvas-compatible key listener.- Specified by:
removeKeyControllerin interfaceICanvas
-
addCanvasListener
public void addCanvasListener(ICanvasListener listener)
- Specified by:
addCanvasListenerin interfaceICanvas
-
removeCanvasListener
public void removeCanvasListener(ICanvasListener listener)
- Specified by:
removeCanvasListenerin interfaceICanvas
-
getCanvasListeners
public List<ICanvasListener> getCanvasListeners()
- Specified by:
getCanvasListenersin interfaceICanvas
-
firePixelScaleChanged
protected void firePixelScaleChanged(double pixelScaleX, double pixelScaleY)
-
-