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
Modifier and TypeFieldDescriptionprotected List<ICanvasListener>
protected com.jogamp.opengl.GLCapabilities
protected com.jogamp.opengl.GLOffscreenAutoDrawable
protected Renderer3d
protected View
Fields inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas
ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINED
-
Constructor Summary
ConstructorDescriptionOffscreenCanvas
(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilities capabilities, int width, int height) -
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.GLCapabilities
com.jogamp.opengl.GLOffscreenAutoDrawable
Returns the GLDrawable associated with the canvasdouble
Provide 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.int
Returns the renderer's height, i.e. the display height.int
Returns the renderer's width, i.e. the display width.getView()
Provide a reference to the View that renders into this canvas.void
initBuffer
(com.jogamp.opengl.GLCapabilities capabilities, int width, int height) Initialize aGLOffscreenAutoDrawable
to the desired dimensions Might be aGLPixelBuffer
orGLFBODrawable
depending on the providedGLCapabilities
(invalid @link
{@link GLCapabilities#setPBuffer(true)
boolean
isNative()
Return true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code.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.void
resize
(int width, int height) com.jogamp.opengl.util.texture.TextureData
Returns an image with the current renderer's sizevoid
screenshot
(File file) void
setPixelScale
(float[] scale) Defines pixel scale.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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 aGLOffscreenAutoDrawable
to the desired dimensions Might be aGLPixelBuffer
orGLFBODrawable
depending on the providedGLCapabilities
(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:
getLastRenderingTimeMs
in interfaceICanvas
-
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
-
getPixelScale
Description copied from interface:ICanvas
Provide 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:
getPixelScale
in interfaceICanvas
-
getPixelScaleJVM
Description copied from interface:ICanvas
Provide pixel scale as considered feasible by the JVM.- Specified by:
getPixelScaleJVM
in interfaceICanvas
-
getDrawable
public com.jogamp.opengl.GLOffscreenAutoDrawable getDrawable()Description copied from interface:INativeCanvas
Returns the GLDrawable associated with the canvas- Specified by:
getDrawable
in interfaceINativeCanvas
-
dispose
public void dispose()Description copied from interface:ICanvas
Performs all required cleanup when destroying a Canvas. -
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 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
-
screenshot
- Specified by:
screenshot
in interfaceICanvas
- Throws:
IOException
-
getView
Provide a reference to the View that renders into this canvas. -
getRendererWidth
public int getRendererWidth()Description copied from interface:ICanvas
Returns the renderer's width, i.e. the display width.- Specified by:
getRendererWidth
in interfaceICanvas
-
getRendererHeight
public int getRendererHeight()Description copied from interface:ICanvas
Returns the renderer's height, i.e. the display height.- Specified by:
getRendererHeight
in interfaceICanvas
-
getRenderer
- Specified by:
getRenderer
in interfaceINativeCanvas
-
getDimension
- Specified by:
getDimension
in interfaceICanvas
-
getDebugInfo
- Specified by:
getDebugInfo
in interfaceICanvas
-
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
-
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) -
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.
-