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
, this canvas can actually be used in AWT, Swing, as well as SWT through org.jzy3d.bridge.swt.Bridge.adapt(swt,awt).
Author:
Martin Pernollet
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • watchPixelScale

      protected void watchPixelScale()
    • newPixelScaleIdentity

      protected float[] newPixelScaleIdentity()
    • newRenderer

      protected Renderer3d newRenderer(IChartFactory factory)
    • getLastRenderingTimeMs

      public double getLastRenderingTimeMs()
      Specified by:
      getLastRenderingTimeMs in interface ICanvas
    • getAnimation

      public IAnimator getAnimation()
      Specified by:
      getAnimation in interface IScreenCanvas
    • 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 as Camera.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 interface ICanvas
      • setPixelScale

        public void setPixelScale(Coord2d scale)
        Specified by:
        setPixelScale in interface ICanvas
      • 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 interface ICanvas
      • getPixelScaleJVM

        public Coord2d getPixelScaleJVM()
        Description copied from interface: ICanvas
        Provide pixel scale as considered feasible by the JVM.
        Specified by:
        getPixelScaleJVM in interface ICanvas
      • 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 interface ICanvas
      • removeCanvasListener

        public void removeCanvasListener(ICanvasListener listener)
        Specified by:
        removeCanvasListener in interface ICanvas
      • getCanvasListeners

        public List<ICanvasListener> getCanvasListeners()
        Specified by:
        getCanvasListeners in interface ICanvas
      • 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.
        Specified by:
        dispose in interface ICanvas
      • getDebugInfo

        public String getDebugInfo()
        Specified by:
        getDebugInfo in interface ICanvas
      • 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 interface ICanvas
      • screenshot

        public void screenshot(File file) throws IOException
        Specified by:
        screenshot in interface ICanvas
        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 interface ICanvas
        Specified by:
        screenshot in interface INativeCanvas
      • 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 interface ICanvas
      • 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 interface ICanvas
      • 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 interface ICanvas
      • 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 interface ICanvas
      • getDrawable

        public com.jogamp.opengl.GLAutoDrawable getDrawable()
        Description copied from interface: INativeCanvas
        Returns the GLDrawable associated with the canvas
        Specified by:
        getDrawable in interface INativeCanvas
      • getRenderer

        public Renderer3d getRenderer()
        Specified by:
        getRenderer in interface INativeCanvas
      • getView

        public View getView()
        Provide a reference to the View that renders into this canvas.
        Specified by:
        getView in interface ICanvas
      • getRendererWidth

        @Deprecated public int getRendererWidth()
        Deprecated.
        Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.
        Specified by:
        getRendererWidth in interface ICanvas
      • getRendererHeight

        @Deprecated public int getRendererHeight()
        Deprecated.
        Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.
        Specified by:
        getRendererHeight in interface ICanvas
      • getDimension

        public Dimension getDimension()
        Specified by:
        getDimension in interface ICanvas
      • 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.
        Specified by:
        isNative in interface ICanvas
      • getExporter

        public AWTImageExporter getExporter()
      • setExporter

        public void setExporter(AWTImageExporter exporter)