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's
invalid @link
GLPanel
org.jzy3d.bridge.swt.Bridge.adapt(swt,awt)
.- Author:
- Martin Pernollet
- See Also:
-
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
Nested classes/interfaces inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
com.jogamp.nativewindow.awt.AWTPrintLifecycle.Context
Nested classes/interfaces inherited from interface com.jogamp.nativewindow.WindowClosingProtocol
com.jogamp.nativewindow.WindowClosingProtocol.WindowClosingMode
-
Field Summary
Modifier and TypeFieldDescriptionprotected IAnimator
protected List<ICanvasListener>
protected ScheduledExecutorService
protected double
protected double
protected Renderer3d
protected 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 com.jogamp.opengl.GLAutoDrawable
SCREEN_CHANGE_ACTION_ENABLED
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
Fields inherited from interface com.jogamp.nativewindow.ScalableSurface
AUTOMAX_PIXELSCALE, IDENTITY_PIXELSCALE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addCanvasListener
(ICanvasListener listener) void
A generic interface for mouse listener to remain Windowing toolkit independant.void
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
Invoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).com.jogamp.opengl.GLAutoDrawable
Returns the GLDrawable associated with the canvasdouble
Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.Provide pixel scale as considered feasible by the JVM.double
double
int
Deprecated.int
Deprecated.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[]
protected Renderer3d
newRenderer
(IChartFactory factory) void
removeCanvasListener
(ICanvasListener listener) void
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
A generic interface for key listener to remain Windowing toolkit independant.protected void
Reset pixel scale to (1,1)com.jogamp.opengl.util.texture.TextureData
Returns an image with the current renderer's sizevoid
screenshot
(File file) void
setExporter
(AWTImageExporter exporter) void
setPixelScale
(float[] scale) Defines pixel scale.void
setPixelScale
(Coord2d scale) void
void
void
protected void
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.AWTGLAutoDrawable
repaint, setSize
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 Details
-
pixelScaleX
protected double pixelScaleX -
pixelScaleY
protected double pixelScaleY -
view
-
renderer
-
animator
-
canvasListeners
-
exec
-
-
Constructor Details
-
CanvasAWT
public CanvasAWT(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
-
-
Method Details
-
watchPixelScale
protected void watchPixelScale() -
newPixelScaleIdentity
protected float[] newPixelScaleIdentity() -
newRenderer
-
getLastRenderingTimeMs
public double getLastRenderingTimeMs()- Specified by:
getLastRenderingTimeMs
in interfaceICanvas
-
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
- Specified by:
setPixelScale
in interfaceICanvas
-
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
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
- Specified by:
addCanvasListener
in interfaceICanvas
-
removeCanvasListener
- Specified by:
removeCanvasListener
in interfaceICanvas
-
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
- 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
- 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
-
triggerMouseMotionEvent
-
triggerMouseWheelEvent
-
addMouseController
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
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
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
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
- Specified by:
getRenderer
in interfaceINativeCanvas
-
getView
Provide a reference to the View that renders into this canvas. -
getRendererWidth
Deprecated.Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.- Specified by:
getRendererWidth
in interfaceICanvas
-
getRendererHeight
Deprecated.Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.- Specified by:
getRendererHeight
in interfaceICanvas
-
getDimension
- Specified by:
getDimension
in interfaceICanvas
-
isNative
public boolean isNative()Description copied from interface:ICanvas
Return true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code. -
getExporter
-
setExporter
-