Class CanvasSwing

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
com.jogamp.opengl.awt.GLJPanel
org.jzy3d.plot3d.rendering.canvas.CanvasSwing
All Implemented Interfaces:
com.jogamp.nativewindow.awt.AWTPrintLifecycle, com.jogamp.nativewindow.NativeSurfaceHolder, 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 CanvasSwing extends com.jogamp.opengl.awt.GLJPanel implements IScreenCanvas, INativeCanvas
Author:
Martin Pernollet
See Also:
  • Field Details

  • Constructor Details

    • CanvasSwing

      public CanvasSwing(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
      Initialize a Canvas3d attached to a Scene, with a given rendering Quality.
  • Method Details

    • watchPixelScale

      protected void watchPixelScale()
    • getLastRenderingTimeMs

      public double getLastRenderingTimeMs()
      Specified by:
      getLastRenderingTimeMs in interface ICanvas
    • 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
      • 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()
      • getAnimation

        public IAnimator getAnimation()
        Specified by:
        getAnimation in interface IScreenCanvas
      • dispose

        public void dispose()
        Description copied from interface: ICanvas
        Performs all required cleanup when destroying a Canvas.
        Specified by:
        dispose in interface ICanvas
      • forceRepaint

        public void forceRepaint()
        Force repaint and ensure that GL2 rendering will occur in the GUI thread, wherever the caller stands.
        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
      • 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
      • getView

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

        public int getRendererWidth()
        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

        public int getRendererHeight()
        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
      • getRenderer

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

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