Class CanvasAWT
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Canvas
-
- com.jogamp.opengl.awt.GLCanvas
-
- org.jzy3d.plot3d.rendering.canvas.CanvasAWT
-
- All Implemented Interfaces:
com.jogamp.nativewindow.awt.AWTPrintLifecycle
,com.jogamp.nativewindow.NativeSurfaceHolder
,com.jogamp.nativewindow.OffscreenLayerOption
,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 CanvasAWT extends com.jogamp.opengl.awt.GLCanvas implements IScreenCanvas, INativeCanvas
CanvasAWT
is a base implementation that primarily allows to integrate a Jzy3d chart in an AWT application. Relying on JOGL'sGLPanel
, this canvas can actually be used in AWT, Swing, as well as SWT throughorg.jzy3d.bridge.swt.Bridge.adapt(swt,awt)
.- Author:
- Martin Pernollet
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.awt.Canvas
Canvas.AccessibleAWTCanvas
-
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 IAnimator
animator
protected List<ICanvasListener>
canvasListeners
protected ScheduledExecutorService
exec
protected double
pixelScaleX
protected double
pixelScaleY
protected Renderer3d
renderer
protected View
view
-
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 CanvasAWT(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCanvasListener(ICanvasListener listener)
void
addKeyController(Object o)
A generic interface for mouse listener to remain Windowing toolkit independant.void
addMouseController(Object o)
A generic interface for mouse listener to remain Windowing toolkit independant.void
dispose()
Performs all required cleanup when destroying a Canvas.protected void
firePixelScaleChanged(double pixelScaleX, double pixelScaleY)
void
forceRepaint()
Invoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).IAnimator
getAnimation()
List<ICanvasListener>
getCanvasListeners()
String
getDebugInfo()
com.jogamp.opengl.GLAutoDrawable
getDrawable()
Returns the GLDrawable associated with the canvasdouble
getLastRenderingTimeMs()
Coord2d
getPixelScale()
Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.Coord2d
getPixelScaleJVM()
Provide pixel scale as considered feasible by the JVM.double
getPixelScaleX()
double
getPixelScaleY()
Renderer3d
getRenderer()
int
getRendererHeight()
Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.int
getRendererWidth()
Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.View
getView()
Provide a reference to the View that renders into this canvas.boolean
isNative()
Return true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code.protected float[]
newPixelScaleIdentity()
protected Renderer3d
newRenderer(IChartFactory factory)
void
removeCanvasListener(ICanvasListener listener)
void
removeKeyController(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.void
removeMouseController(Object o)
A generic interface for key listener to remain Windowing toolkit independant.protected void
resetPixelScale()
Reset pixel scale to (1,1)com.jogamp.opengl.util.texture.TextureData
screenshot()
Returns an image with the current renderer's sizevoid
screenshot(File file)
void
setPixelScale(float[] scale)
Defines pixel scale.void
setPixelScale(Coord2d scale)
void
triggerMouseEvent(MouseEvent e)
void
triggerMouseMotionEvent(MouseEvent e)
void
triggerMouseWheelEvent(MouseWheelEvent e)
protected void
watchPixelScale()
-
Methods inherited from class com.jogamp.opengl.awt.GLCanvas
addGLEventListener, addGLEventListener, addNotify, areAllGLEventListenerInitialized, createContext, destroy, destroyImpl, display, disposeGLEventListener, flushGLRunnables, getAnimator, getAutoSwapBufferMode, getChosenGLCapabilities, getContext, getContextCreationFlags, getCurrentSurfaceScale, getDefaultCloseOperation, getDelegatedDrawable, getExclusiveContextThread, getFactory, getGL, getGLEventListener, getGLEventListenerCount, getGLEventListenerInitState, getGLProfile, getGraphicsConfiguration, getHandle, getMaximumSurfaceScale, getMinimumSurfaceScale, getNativeSurface, getRequestedGLCapabilities, getRequestedSurfaceScale, getShallUseOffscreenLayer, getSurfaceHeight, getSurfaceWidth, getThreadName, getUpstreamLock, getUpstreamWidget, invoke, invoke, isGLOriented, isOffscreenLayerSurfaceEnabled, isRealized, isThreadGLCapable, main, paint, print, releasePrint, removeGLEventListener, removeNotify, reshape, setAnimator, setAutoSwapBufferMode, setContext, setContextCreationFlags, setDefaultCloseOperation, setExclusiveContextThread, setGL, setGLEventListenerInitState, setRealized, setShallUseOffscreenLayer, setSharedAutoDrawable, setSharedContext, setSurfaceScale, setupPrint, swapBuffers, toString, update
-
Methods inherited from class java.awt.Canvas
createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
-
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
-
pixelScaleX
protected double pixelScaleX
-
pixelScaleY
protected double pixelScaleY
-
view
protected View view
-
renderer
protected Renderer3d renderer
-
animator
protected IAnimator animator
-
canvasListeners
protected List<ICanvasListener> canvasListeners
-
exec
protected ScheduledExecutorService exec
-
-
Constructor Detail
-
CanvasAWT
public CanvasAWT(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
-
-
Method Detail
-
watchPixelScale
protected void watchPixelScale()
-
newPixelScaleIdentity
protected float[] newPixelScaleIdentity()
-
newRenderer
protected Renderer3d newRenderer(IChartFactory factory)
-
getLastRenderingTimeMs
public double getLastRenderingTimeMs()
- Specified by:
getLastRenderingTimeMs
in interfaceICanvas
-
getAnimation
public IAnimator getAnimation()
- Specified by:
getAnimation
in interfaceIScreenCanvas
-
setPixelScale
public void setPixelScale(float[] scale)
Description copied from interface:ICanvas
Defines 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:
setPixelScale
in interfaceICanvas
-
setPixelScale
public void setPixelScale(Coord2d scale)
-
getPixelScale
public Coord2d getPixelScale()
Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.- Specified by:
getPixelScale
in interfaceICanvas
-
getPixelScaleJVM
public Coord2d getPixelScaleJVM()
Description copied from interface:ICanvas
Provide pixel scale as considered feasible by the JVM.- Specified by:
getPixelScaleJVM
in interfaceICanvas
-
getPixelScaleX
public double getPixelScaleX()
-
getPixelScaleY
public double getPixelScaleY()
-
resetPixelScale
protected void resetPixelScale()
Reset pixel scale to (1,1)
-
addCanvasListener
public void addCanvasListener(ICanvasListener listener)
- Specified by:
addCanvasListener
in interfaceICanvas
-
removeCanvasListener
public void removeCanvasListener(ICanvasListener listener)
- Specified by:
removeCanvasListener
in interfaceICanvas
-
getCanvasListeners
public List<ICanvasListener> getCanvasListeners()
- Specified by:
getCanvasListeners
in interfaceICanvas
-
firePixelScaleChanged
protected void firePixelScaleChanged(double pixelScaleX, double pixelScaleY)
-
dispose
public void dispose()
Description copied from interface:ICanvas
Performs all required cleanup when destroying a Canvas.
-
getDebugInfo
public String getDebugInfo()
- Specified by:
getDebugInfo
in interfaceICanvas
-
forceRepaint
public void forceRepaint()
Description copied from interface:ICanvas
Invoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).- Specified by:
forceRepaint
in interfaceICanvas
-
screenshot
public void screenshot(File file) throws IOException
- Specified by:
screenshot
in interfaceICanvas
- Throws:
IOException
-
screenshot
public com.jogamp.opengl.util.texture.TextureData screenshot()
Description copied from interface:INativeCanvas
Returns an image with the current renderer's size- Specified by:
screenshot
in interfaceICanvas
- Specified by:
screenshot
in interfaceINativeCanvas
-
triggerMouseEvent
public void triggerMouseEvent(MouseEvent e)
-
triggerMouseMotionEvent
public void triggerMouseMotionEvent(MouseEvent e)
-
triggerMouseWheelEvent
public void triggerMouseWheelEvent(MouseWheelEvent e)
-
addMouseController
public void addMouseController(Object o)
Description copied from interface:ICanvas
A 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:
addMouseController
in interfaceICanvas
-
addKeyController
public void addKeyController(Object o)
Description copied from interface:ICanvas
A 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:
addKeyController
in interfaceICanvas
-
removeMouseController
public void removeMouseController(Object o)
Description copied from interface:ICanvas
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.- Specified by:
removeMouseController
in interfaceICanvas
-
removeKeyController
public void removeKeyController(Object o)
Description copied from interface:ICanvas
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.- Specified by:
removeKeyController
in interfaceICanvas
-
getDrawable
public com.jogamp.opengl.GLAutoDrawable getDrawable()
Description copied from interface:INativeCanvas
Returns the GLDrawable associated with the canvas- Specified by:
getDrawable
in interfaceINativeCanvas
-
getRenderer
public Renderer3d getRenderer()
- Specified by:
getRenderer
in 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:
getRendererWidth
in 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:
getRendererHeight
in interfaceICanvas
-
-