Class OffscreenCanvas
- java.lang.Object
-
- org.jzy3d.plot3d.rendering.canvas.OffscreenCanvas
-
- All Implemented Interfaces:
ICanvas,INativeCanvas
public class OffscreenCanvas extends Object implements ICanvas, INativeCanvas
AnICanvasimplementation 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:
Note that thechart.screenshot();GLCapabilitiesare modified while an instance ofOffscreenCanvasis modified.- Author:
- Nils Hoffman, Martin Pernollet
-
-
Field Summary
Fields Modifier and Type Field Description protected List<ICanvasListener>canvasListenersprotected com.jogamp.opengl.GLCapabilitiescapabilitiesprotected com.jogamp.opengl.GLOffscreenAutoDrawableoffscreenDrawableprotected Renderer3drendererprotected Viewview-
Fields inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas
ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINED
-
-
Constructor Summary
Constructors Constructor Description OffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height)OffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height, 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()Invoked when a user requires the Canvas to be repainted (e.g. a non 3d layer has changed).List<ICanvasListener>getCanvasListeners()com.jogamp.opengl.GLCapabilitiesgetCapabilities()StringgetDebugInfo()com.jogamp.opengl.GLOffscreenAutoDrawablegetDrawable()Returns the GLDrawable associated with the canvasdoublegetLastRenderingTimeMs()Coord2dgetPixelScale()Provide pixel scale as feasible by the Hardware, OS, and JVM, independently of what was asked byICanvas.setPixelScale(float[]).Renderer3dgetRenderer()intgetRendererHeight()Returns the renderer's height, i.e. the display height.intgetRendererWidth()Returns the renderer's width, i.e. the display width.ViewgetView()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({@link GLCapabilities#setPBuffer(true)} to enable PBuffer).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.
-
-
-
Field Detail
-
view
protected View view
-
renderer
protected Renderer3d renderer
-
offscreenDrawable
protected com.jogamp.opengl.GLOffscreenAutoDrawable offscreenDrawable
-
capabilities
protected com.jogamp.opengl.GLCapabilities capabilities
-
canvasListeners
protected List<ICanvasListener> canvasListeners
-
-
Constructor Detail
-
OffscreenCanvas
public OffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height)
-
OffscreenCanvas
public OffscreenCanvas(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height, boolean traceGL, boolean debugGL)
-
-
Method Detail
-
initBuffer
public void initBuffer(com.jogamp.opengl.GLCapabilities capabilities, int width, int height)Initialize aGLOffscreenAutoDrawableto the desired dimensions Might be aGLPixelBufferorGLFBODrawabledepending on the providedGLCapabilities({@link GLCapabilities#setPBuffer(true)} to enable PBuffer). Can be called several time to reset buffer dimensions.- Parameters:
capabilities- with a setOnscreen flag set to true, otherwise forced to true.width- image widthheight- image width
-
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
public Coord2d 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
-
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
public void screenshot(File file) throws IOException
- Specified by:
screenshotin interfaceICanvas- Throws:
IOException
-
getView
public View 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
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)
-
-