Class CanvasNewtSWT

java.lang.Object
org.eclipse.swt.widgets.Widget
org.eclipse.swt.widgets.Control
org.eclipse.swt.widgets.Scrollable
org.eclipse.swt.widgets.Composite
org.jzy3d.chart.factories.CanvasNewtSWT
All Implemented Interfaces:
org.eclipse.swt.graphics.Drawable, ICanvas, INativeCanvas, IScreenCanvas

public class CanvasNewtSWT extends org.eclipse.swt.widgets.Composite implements IScreenCanvas, INativeCanvas
A Newt canvas wrapped in an AWT 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.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected IAnimator
     
    protected com.jogamp.newt.swt.NewtCanvasSWT
     
     
     
    protected Renderer3d
     
    protected View
     
    protected com.jogamp.newt.opengl.GLWindow
     

    Fields inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas

    ALLOW_WATCH_PIXEL_SCALE, LAST_RENDER_TIME_UNDEFINED
  • Constructor Summary

    Constructors
    Constructor
    Description
    CanvasNewtSWT(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci)
     
    CanvasNewtSWT(IChartFactory factory, Scene scene, Quality quality, com.jogamp.opengl.GLCapabilitiesImmutable glci, boolean traceGL, boolean debugGL)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    void
    A generic interface for mouse listener to remain Windowing toolkit independant.
    void
    addKeyListener(com.jogamp.newt.event.KeyListener l)
     
    void
    A generic interface for mouse listener to remain Windowing toolkit independant.
    void
    addMouseListener(com.jogamp.newt.event.MouseListener l)
     
    void
     
    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.newt.swt.NewtCanvasSWT
     
     
     
     
    com.jogamp.opengl.GLAutoDrawable
    Returns the GLDrawable associated with the canvas
    double
     
    Pixel scale is used to model the pixel ratio thay may be introduced by HiDPI or Retina displays.
    Provide pixel scale as considered feasible by the JVM.
    double
     
    double
     
     
    int
    Provide the actual renderer height for the open gl camera settings, which is obtained after a resize event.
    int
    Provide the actual renderer width for the open gl camera settings, which is obtained after a resize event.
    Provide a reference to the View that renders into this canvas.
    com.jogamp.newt.opengl.GLWindow
     
    boolean
    Return true if the canvas renders GL with GPU, false if renders GL using CPU executed Java code.
    void
     
    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
    removeKeyListener(com.jogamp.newt.event.KeyListener l)
     
    void
    A generic interface for key listener to remain Windowing toolkit independant.
    void
    removeMouseListener(com.jogamp.newt.event.MouseListener l)
     
    com.jogamp.opengl.util.texture.TextureData
    Returns an image with the current renderer's size
    void
     
    void
    setPixelScale(float[] scale)
    Defines pixel scale.
    protected void
     

    Methods inherited from class org.eclipse.swt.widgets.Composite

    changed, checkSubclass, computeSize, drawBackground, getBackgroundMode, getChildren, getLayout, getLayoutDeferred, getTabList, isLayoutDeferred, layout, layout, layout, layout, layout, redraw, setBackgroundMode, setFocus, setLayout, setLayoutDeferred, setTabList

    Methods inherited from class org.eclipse.swt.widgets.Scrollable

    computeTrim, getClientArea, getHorizontalBar, getScrollbarsMode, getVerticalBar

    Methods inherited from class org.eclipse.swt.widgets.Control

    addControlListener, addDragDetectListener, addFocusListener, addGestureListener, addHelpListener, addKeyListener, addMenuDetectListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addMouseWheelListener, addPaintListener, addTouchListener, addTraverseListener, computeSize, dragDetect, dragDetect, forceFocus, getAccessible, getBackground, getBackgroundImage, getBorderWidth, getBounds, getCursor, getDragDetect, getEnabled, getFont, getForeground, getLayoutData, getLocation, getMenu, getMonitor, getOrientation, getParent, getRegion, getShell, getSize, getTextDirection, getToolTipText, getTouchEnabled, getVisible, internal_dispose_GC, internal_new_GC, isEnabled, isFocusControl, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, print, redraw, removeControlListener, removeDragDetectListener, removeFocusListener, removeGestureListener, removeHelpListener, removeKeyListener, removeMenuDetectListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removeMouseWheelListener, removePaintListener, removeTouchListener, removeTraverseListener, requestLayout, setBackground, setBackgroundImage, setBounds, setBounds, setCapture, setCursor, setDragDetect, setEnabled, setFont, setForeground, setLayoutData, setLocation, setLocation, setMenu, setOrientation, setParent, setRedraw, setRegion, setSize, setSize, setTextDirection, setToolTipText, setTouchEnabled, setVisible, toControl, toControl, toDisplay, toDisplay, traverse, traverse, traverse, update

    Methods inherited from class org.eclipse.swt.widgets.Widget

    addDisposeListener, addListener, checkWidget, dispose, getData, getData, getDisplay, getListeners, getStyle, isAutoDirection, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, reskin, setData, setData, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.eclipse.swt.graphics.Drawable

    isAutoScalable

    Methods inherited from interface org.jzy3d.plot3d.rendering.canvas.ICanvas

    dispose, setPixelScale
  • 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.swt.NewtCanvasSWT canvas
    • canvasListeners

      protected List<ICanvasListener> canvasListeners
    • exec

      protected ScheduledExecutorService exec
  • Constructor Details

    • CanvasNewtSWT

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

      public CanvasNewtSWT(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
      • 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()
      • getWindow

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

        public com.jogamp.newt.swt.NewtCanvasSWT 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
      • 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