Class CanvasNewtAwt

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
org.jzy3d.plot3d.rendering.canvas.CanvasNewtAwt
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, ICanvas, INativeCanvas, IScreenCanvas

public class CanvasNewtAwt extends Panel implements IScreenCanvas, INativeCanvas
A Newt canvas wrapped in an AWT Panel. Newt is supposed to be faster than any other canvas, either for AWT or Swing. If a non AWT panel where required, follow the guidelines given in IScreenCanvas documentation.
See Also:
  • Field Details

    • view

      protected View view
    • renderer

      protected Renderer3d renderer
    • animator

      protected IAnimator animator
    • window

      protected com.jogamp.newt.opengl.GLWindow window
    • canvas

      protected com.jogamp.newt.awt.NewtCanvasAWT canvas
    • canvasListeners

      protected List<ICanvasListener> canvasListeners
    • exec

      protected ScheduledExecutorService exec
  • Constructor Details

    • CanvasNewtAwt

      public CanvasNewtAwt(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
    • CanvasNewtAwt

      public CanvasNewtAwt(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci, boolean traceGL, boolean debugGL)
  • Method Details

    • watchPixelScale

      protected void watchPixelScale()
    • 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
      • 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
      • getPixelScaleX

        public double getPixelScaleX()
      • getPixelScaleY

        public double getPixelScaleY()
      • getPixelScaleJVM

        public Coord2d getPixelScaleJVM()
        Description copied from interface: ICanvas
        Provide pixel scale as considered feasible by the JVM.
        Specified by:
        getPixelScaleJVM in interface ICanvas
      • getWindow

        public com.jogamp.newt.opengl.GLWindow getWindow()
      • getCanvas

        public com.jogamp.newt.awt.NewtCanvasAWT getCanvas()
      • 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
      • dispose

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

        public void display()
        Specified by:
        display in interface IScreenCanvas
      • 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 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
      • screenshot

        public void screenshot(File file) throws IOException
        Specified by:
        screenshot in interface ICanvas
        Throws:
        IOException
      • getDebugInfo

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

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

        public void addKeyListener(com.jogamp.newt.event.KeyListener l)
      • addMouseListener

        public void addMouseListener(com.jogamp.newt.event.MouseListener l)
      • removeMouseListener

        public void removeMouseListener(com.jogamp.newt.event.MouseListener l)
      • removeKeyListener

        public void removeKeyListener(com.jogamp.newt.event.KeyListener l)
      • 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