Class OffscreenCanvas
java.lang.Object
org.jzy3d.plot3d.rendering.canvas.OffscreenCanvas
- All Implemented Interfaces:
ICanvas,INativeCanvas
An
ICanvas implementation able to render the chart in an offscreen canvas, meaning no
frame or GUI is needed to get a chart.
Subsequently, one will wish to generate chart images by calling:
chart.screenshot();
Note that the GLCapabilities are modified while an instance of OffscreenCanvas is
modified.- Author:
- Nils Hoffman, Martin Pernollet
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected List<ICanvasListener>protected com.jogamp.opengl.GLCapabilitiesprotected com.jogamp.opengl.GLOffscreenAutoDrawableprotected Renderer3dprotected ViewFields inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas
ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINED -
Constructor Summary
ConstructorsConstructorDescriptionOffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCanvasListener(ICanvasListener listener) voidA generic interface for mouse listener to remain Windowing toolkit independant.voidA 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) voidInvoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).com.jogamp.opengl.GLCapabilitiescom.jogamp.opengl.GLOffscreenAutoDrawableReturns the GLDrawable associated with the canvasdoubleProvide pixel scale as feasible by the Hardware, OS, and JVM, independently of what was asked byICanvas.setPixelScale(float[]).Provide pixel scale as considered feasible by the JVM.intReturns the renderer's height, i.e. the display height.intReturns the renderer's width, i.e. the display width.getView()Provide a reference to the View that renders into this canvas.voidinitBuffer(com.jogamp.opengl.GLCapabilities capabilities, int width, int height) Initialize aGLOffscreenAutoDrawableto the desired dimensions Might be aGLPixelBufferorGLFBODrawabledepending on the providedGLCapabilities(} to enable PBuffer).invalid @link
{@link GLCapabilities#setPBuffer(true)booleanisNative()Return true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code.voidremoveCanvasListener(ICanvasListener listener) voidA 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.voidA generic interface for key listener to remain Windowing toolkit independant.voidresize(int width, int height) com.jogamp.opengl.util.texture.TextureDataReturns an image with the current renderer's sizevoidscreenshot(File file) voidsetPixelScale(float[] scale) Defines pixel scale.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas
setPixelScale
-
Field Details
-
view
-
renderer
-
offscreenDrawable
protected com.jogamp.opengl.GLOffscreenAutoDrawable offscreenDrawable -
capabilities
protected com.jogamp.opengl.GLCapabilities capabilities -
canvasListeners
-
-
Constructor Details
-
OffscreenCanvas
public OffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height)
-
-
Method Details
-
initBuffer
public void initBuffer(com.jogamp.opengl.GLCapabilities capabilities, int width, int height) Initialize aGLOffscreenAutoDrawableto the desired dimensions Might be aGLPixelBufferorGLFBODrawabledepending on the providedGLCapabilities(} to enable PBuffer). Can be called several time to reset buffer dimensions.invalid @link
{@link GLCapabilities#setPBuffer(true)- Parameters:
capabilities- with a setOnscreen flag set to true, otherwise forced to true.width- image widthheight- image width
-
resize
public void resize(int width, int height) -
getCapabilities
public com.jogamp.opengl.GLCapabilities getCapabilities() -
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
Description copied from interface:ICanvasProvide pixel scale as feasible by the Hardware, OS, and JVM, independently of what was asked byICanvas.setPixelScale(float[]). Hence the two functions may not be consistent together.- Specified by:
getPixelScalein interfaceICanvas
-
getPixelScaleJVM
Description copied from interface:ICanvasProvide pixel scale as considered feasible by the JVM.- Specified by:
getPixelScaleJVMin interfaceICanvas
-
getDrawable
public com.jogamp.opengl.GLOffscreenAutoDrawable getDrawable()Description copied from interface:INativeCanvasReturns the GLDrawable associated with the canvas- Specified by:
getDrawablein interfaceINativeCanvas
-
dispose
public void dispose()Description copied from interface:ICanvasPerforms all required cleanup when destroying a Canvas. -
forceRepaint
public void forceRepaint()Description copied from interface:ICanvasInvoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).- Specified by:
forceRepaintin interfaceICanvas
-
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
-
screenshot
- Specified by:
screenshotin interfaceICanvas- Throws:
IOException
-
getView
Provide a reference to the View that renders into this canvas. -
getRendererWidth
public int getRendererWidth()Description copied from interface:ICanvasReturns the renderer's width, i.e. the display width.- Specified by:
getRendererWidthin interfaceICanvas
-
getRendererHeight
public int getRendererHeight()Description copied from interface:ICanvasReturns the renderer's height, i.e. the display height.- Specified by:
getRendererHeightin interfaceICanvas
-
getRenderer
- Specified by:
getRendererin interfaceINativeCanvas
-
getDimension
- Specified by:
getDimensionin interfaceICanvas
-
getDebugInfo
- Specified by:
getDebugInfoin interfaceICanvas
-
addMouseController
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
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
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
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
- Specified by:
addCanvasListenerin interfaceICanvas
-
removeCanvasListener
- Specified by:
removeCanvasListenerin interfaceICanvas
-
getCanvasListeners
- Specified by:
getCanvasListenersin interfaceICanvas
-
firePixelScaleChanged
protected void firePixelScaleChanged(double pixelScaleX, double pixelScaleY) -
isNative
public boolean isNative()Description copied from interface:ICanvasReturn true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code.
-