## visad
Class DisplayRenderer

    java.lang.Object
      visad.DisplayRenderer

All Implemented Interfaces:
  ControlListener, EventListener

Direct Known Subclasses:
  DisplayRendererJ2D, DisplayRendererJ3D

public abstract class DisplayRenderer
extends Object
implements ControlListener

`DisplayRenderer` is the VisAD abstract super-class for background and metadata rendering algorithms. These complement depictions of `Data` objects created by `DataRenderer` objects.

`DisplayRenderer` also manages the overall relation of `DataRenderer` output to the graphics library.

`DisplayRenderer` is not `Serializable` and should not be copied between JVMs.

Field Summary
`(package private) String[]` `animationString` Strings to display during next frame of animation.

Constructor Summary
`DisplayRenderer()` Construct a new `DisplayRenderer`.

Method Summary
`abstract boolean` `anyDirects()`
`(package private) void` `clearAxisOrdinals()` Reset all the axis ordinals and remove all scales.
`abstract void` `clearScale(AxisScale axisScale)` Remove a particular scale being rendered.
`abstract void` `clearScales()` Remove all the scales being rendered.
`abstract void` `depth_cursor(VisADRay ray)` set a VisADRay along which to drag cursor in depth (in and out of screen)
`abstract void` `drag_cursor(VisADRay ray, boolean first)` drag cursor parallel to plane of screen
`abstract void` `drag_depth(float diff)` drag cursor in depth (in and out of screen)
`abstract DataRenderer` `findDirect(VisADRay ray, int mouseModifiers)` Returns a direct manipulation renderer if one is close to the specified ray (within pick threshold).
`String[]` `getAnimationString()` Return Array of `String`s describing the animation sequence
`boolean` `getAnimationStringVisible()` Return whether the animation info should be visible in the display or not.
`(package private) int` `getAxisOrdinal(int axis)` Get a new ordinal number for this axis.
`boolean` `getBoxOn()` Get the box visibility.
`abstract double[]` `getCursor()` Return an array giving the cursor location as (XAxis, YAxis, ZAxis) coordinates
`float[]` `getCursorColor()` Get the cursor color.
`Vector` `getCursorStringVector()` Return `Vector` of `String`s describing the cursor location, if cursor location display is enabled.
`Vector` `getCursorStringVectorUnconditional()` Return `Vector` of `String`s describing the cursor location, regardless of whether cursor location display is enabled.
`double` `getDirectAxisValue(RealType type)` get the value of a RealType if it is included in the cursor location
`double` `getDirectAxisValue(String name)` get the value of a named RealType if it is included in the cursor location
`DisplayImpl` `getDisplay()` Get the `Display` associated with this renderer.
`abstract BufferedImage` `getImage()` Get a snapshot of the displayed image.
`boolean` `getMode2D()` Return `true` if this is a 2-D `DisplayRenderer`.
`abstract MouseBehavior` `getMouseBehavior()`
`float` `getPickThreshhold()`
`RendererControl` `getRendererControl()` Get the `Control` which holds the "shared" data for this renderer.
`abstract int` `getTextureHeightMax()`
`abstract int` `getTextureWidthMax()`
`boolean` `getWaitFlag()` Get the wait flag state.
`boolean` `getWaitMessageVisible()` Return whether the please wait info should be visible in the display or not.
`abstract void` `initControl(RendererControl ctl)` Internal method used to initialize newly created `RendererControl` with current renderer settings before it is actually connected to the renderer.
`abstract boolean` `legalDataRenderer(DataRenderer renderer)` determine whether a DataRenderer is legal for this DisplayRenderer
`boolean` `legalDisplayScalar(DisplayRealType type)` Return `true` if `type` is legal for this `DisplayRenderer`; for example, 2-D `DisplayRenderer`s use this to disallow mappings to ZAxis and Latitude.
`abstract Control` `makeControl(ScalarMap map)` Factory for constructing a subclass of `Control` appropriate for the graphics API and for this `DisplayRenderer`; invoked by `ScalarMap` when it is `addMap()`ed to a `Display`.
`abstract DataRenderer` `makeDefaultRenderer()` Factory for constructing the default subclass of `DataRenderer` for this `DisplayRenderer`.
`void` `prepareAction(Vector temp, Vector tmap, boolean go, boolean initialize)` prepare for transforming Data into scene graph depictions, including possible auto-scaling of ScalarMaps
`void` `render_trigger()` trigger the graphics API to render the scene graph to the screen; intended to be over-ridden by graphics-API-specific extensions of DisplayRenderer
`void` `setAnimationString(String[] animation)` Set Array of `String`s describing the animation sequence
`void` `setAnimationStringVisible(boolean visible)` Set whether the animation info should be visible in the display or not.
`void` `setBackgroundColor(Color color)` Set the background color.
`void` `setBackgroundColor(float r, float g, float b)` Set the background color.
`abstract void` `setBoxAspect(double[] aspect)` set the aspect for the containing box aspect double[3] array used to scale x, y and z box sizes
`void` `setBoxColor(Color color)` Set the box color.
`void` `setBoxColor(float r, float g, float b)` Set the box color.
`void` `setBoxOn(boolean on)` Set the box visibility.
`void` `setCursorColor(Color color)` Set the cursor color.
`void` `setCursorColor(float r, float g, float b)` Set the cursor color.
`abstract void` `setCursorOn(boolean on)` set flag indicating whether the cursor should be displayed.
`void` `setCursorStringOn(boolean on)` set flag indicating whether the cursor location String should be displayed.
`void` `setCursorStringVector()` Set `Vector` of `String`s describing the cursor location from the cursor location; this is invoked when the cursor location changes or the cursor display status changes
`void` `setCursorStringVector(Vector vect)` Set `Vector` of `String`s describing the cursor location by copy; this is invoked by direct manipulation renderers.
`abstract void` `setDirectOn(boolean on)` set flag indicating whether direct manipulation is active
`void` `setDisplay(DisplayImpl d)` Specify `DisplayImpl` to be rendered.
`void` `setForegroundColor(Color color)` Set the foreground color (box, cursor and scales).
`void` `setForegroundColor(float r, float g, float b)` Set the foreground color (box, cursor and scales).
`void` `setPickThreshhold(float pt)` set the distance threshhold for picking in direct manipulation
`abstract void` `setScale(AxisScale axisScale)` Set an axis scale.
`abstract void` `setScale(int axis, int axis_ordinal, VisADLineArray array, float[] scale_color)` Set an axis scale.
`abstract void` `setScale(int axis, int axis_ordinal, VisADLineArray array, VisADTriangleArray labels, float[] scale_color)` Set an axis scale.
`abstract void` `setScaleOn(boolean on)` Enable scales to be displayed if they are set.
`void` `setWaitFlag(boolean b)` Set the wait flag to the specified value.
`void` `setWaitMessageVisible(boolean visible)` Set whether the "please wait" info should be visible in the display or not.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface visad.ControlListener
`controlChanged`

Field Detail

### animationString

    String[] animationString

  Strings to display during next frame of animation.

Constructor Detail

### DisplayRenderer

    public DisplayRenderer()

  Construct a new `DisplayRenderer`.

Method Detail

### getPickThreshhold

    public float getPickThreshhold()

  Returns:
    the distance threshhold for picking in direct manipulation (distance in XAxis, YAxis, ZAxis coordinates)

### setPickThreshhold

    public void setPickThreshhold(float pt)

  set the distance threshhold for picking in direct manipulation

  Parameters:
    `pt` - distance (in XAxis, YAxis, ZAxis coordinates)

### setBoxAspect

    public abstract void setBoxAspect(double[] aspect)

  set the aspect for the containing box aspect double[3] array used to scale x, y and z box sizes

### setDisplay

    public void setDisplay(DisplayImpl d)
                    throws VisADException

  Specify `DisplayImpl` to be rendered.

  Parameters:
    `d` - `Display` to render.
  Throws:
    `VisADException` - If a `DisplayImpl` has already been specified.

### initControl

    public abstract void initControl(RendererControl ctl)

  Internal method used to initialize newly created `RendererControl` with current renderer settings before it is actually connected to the renderer. This means that changes will not generate `MonitorEvent`s.

  Parameters:
    `ctl` - RendererControl to initialize

### getDisplay

    public DisplayImpl getDisplay()

  Get the `Display` associated with this renderer.

  Returns:
    The Display being rendered.

### getRendererControl

    public RendererControl getRendererControl()

  Get the `Control` which holds the "shared" data for this renderer.

  Returns:
    The renderer `Control`.

### setWaitFlag

    public void setWaitFlag(boolean b)

  Set the wait flag to the specified value. (When the wait flag is enabled, the user is informed that the application is busy, typically by displaying a `Please wait . . .` message at the bottom of the `Display`.) DisplayEvent.WAIT_ON and DisplayEvent.WAIT_OFF events are fired based on value of b.

  Parameters:
    `b` - Boolean value to which wait flag is set.

### getWaitFlag

    public boolean getWaitFlag()

  Get the wait flag state.

  Returns:
    `true` if the wait flag is enabled.

### getAxisOrdinal

    int getAxisOrdinal(int axis)

  Get a new ordinal number for this axis.

  Parameters:
    `axis` - Axis for which ordinal is returned (XAxis=0, YAxis=1, ZAxis=2).
  Returns:
    The new ordinal number.

### clearAxisOrdinals

    void clearAxisOrdinals()

  Reset all the axis ordinals and remove all scales.

### getImage

    public abstract BufferedImage getImage()

  Get a snapshot of the displayed image.

  Returns:
    The current image being displayed.

### setScale

    public abstract void setScale(AxisScale axisScale)
                           throws VisADException

  Set an axis scale.

  Parameters:
    `axisScale` - AxisScale to set (it knows what axis it is for)
  Throws:
    `VisADException` - couldn't set the scale

### setScale

    public abstract void setScale(int axis,
                                  int axis_ordinal,
                                  VisADLineArray array,
                                  float[] scale_color)
                           throws VisADException

  Set an axis scale.

  Parameters:
    `axis` - axis for this scale (0 = XAxis, 1 = YAxis, 2 = ZAxis)
    `axis_ordinal` - position along the axis
    `array` - `VisADLineArray` representing the scale plot
    `scale_color` - float[3] array representing the red, green and blue color values.
  Throws:
    `VisADException` - couldn't set the scale

### setScale

    public abstract void setScale(int axis,
                                  int axis_ordinal,
                                  VisADLineArray array,
                                  VisADTriangleArray labels,
                                  float[] scale_color)
                           throws VisADException

  Set an axis scale.

  Parameters:
    `axis` - axis for this scale (0 = XAxis, 1 = YAxis, 2 = ZAxis)
    `axis_ordinal` - position along the axis
    `array` - `VisADLineArray` representing the scale plot
    `labels` - `VisADTriangleArray` representing the labels created using a font (can be null)
    `scale_color` - float[3] array representing the red, green and blue color values.
  Throws:
    `VisADException` - couldn't set the scale

### clearScales

    public abstract void clearScales()

  Remove all the scales being rendered.

### clearScale

    public abstract void clearScale(AxisScale axisScale)

  Remove a particular scale being rendered.

  Parameters:
    `axisScale` - scale to remove

### setScaleOn

    public abstract void setScaleOn(boolean on)

  Enable scales to be displayed if they are set. This should not be called programmatically, since it does not update collaborative displays. Applications should use `GraphicsModeControl.setScaleEnable` instead of this method.

  Parameters:
    `on` - true to turn them on, false to set them invisible

### getMode2D

    public boolean getMode2D()

  Return `true` if this is a 2-D `DisplayRenderer`.

  Returns:
    `true` if this is a 2-D renderer.

### setBackgroundColor

    public void setBackgroundColor(Color color)
                            throws RemoteException,
                                   VisADException

  Set the background color.

  Parameters:
    `color` - background color
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setBackgroundColor

    public void setBackgroundColor(float r,
                                   float g,
                                   float b)
                            throws RemoteException,
                                   VisADException

  Set the background color. All specified values should be in the range `[0.0f - 1.0f]`.

  Parameters:
    `r` - Red value.
    `g` - Green value.
    `b` - Blue value.
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setForegroundColor

    public void setForegroundColor(Color color)
                            throws RemoteException,
                                   VisADException

  Set the foreground color (box, cursor and scales).

  Parameters:
    `color` - foreground color
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setForegroundColor

    public void setForegroundColor(float r,
                                   float g,
                                   float b)
                            throws RemoteException,
                                   VisADException

  Set the foreground color (box, cursor and scales). All specified values should be in the range `[0.0f - 1.0f]`.

  Parameters:
    `r` - Red value.
    `g` - Green value.
    `b` - Blue value.
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### getBoxOn

    public boolean getBoxOn()
                     throws RemoteException,
                            VisADException

  Get the box visibility.

  Returns:
    `true` if the box is visible.
  Throws:
    `RemoteException`
    `VisADException`

### setBoxColor

    public void setBoxColor(Color color)
                     throws RemoteException,
                            VisADException

  Set the box color.

  Parameters:
    `color` - box color
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setBoxColor

    public void setBoxColor(float r,
                            float g,
                            float b)
                     throws RemoteException,
                            VisADException

  Set the box color. All specified values should be in the range `[0.0f - 1.0f]`.

  Parameters:
    `r` - Red value.
    `g` - Green value.
    `b` - Blue value.
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setBoxOn

    public void setBoxOn(boolean on)
                  throws RemoteException,
                         VisADException

  Set the box visibility.

  Parameters:
    `on` - `true` if the box should be visible.
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### getCursorColor

    public float[] getCursorColor()
                           throws RemoteException,
                                  VisADException

  Get the cursor color.

  Returns:
    A 3 element array of `float` values in the range `[0.0f - 1.0f]` in the order (Red, Green, Blue).
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setCursorColor

    public void setCursorColor(Color color)
                        throws RemoteException,
                               VisADException

  Set the cursor color.

  Parameters:
    `color` - cursor color
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### setCursorColor

    public void setCursorColor(float r,
                               float g,
                               float b)
                        throws RemoteException,
                               VisADException

  Set the cursor color. All specified values should be in the range `[0.0f - 1.0f]`.

  Parameters:
    `r` - Red value.
    `g` - Green value.
    `b` - Blue value.
  Throws:
    `RemoteException` - If there was a problem making this change in a remote collaborative `DisplayRenderer`.
    `VisADException` - If this renderer as not yet been assigned to a `Display`.

### makeControl

    public abstract Control makeControl(ScalarMap map)

  Factory for constructing a subclass of `Control` appropriate for the graphics API and for this `DisplayRenderer`; invoked by `ScalarMap` when it is `addMap()`ed to a `Display`.

  Parameters:
    `map` - The `ScalarMap` for which a `Control` should be built.
  Returns:
    The appropriate `Control`.

### makeDefaultRenderer

    public abstract DataRenderer makeDefaultRenderer()

  Factory for constructing the default subclass of `DataRenderer` for this `DisplayRenderer`.

  Returns:
    The default `DataRenderer`.

### legalDataRenderer

    public abstract boolean legalDataRenderer(DataRenderer renderer)

  determine whether a DataRenderer is legal for this DisplayRenderer

  Parameters:
    `renderer` - DisplayRenderer to test for legality
  Returns:
    true if renderer is legal

### setAnimationStringVisible

    public void setAnimationStringVisible(boolean visible)

  Set whether the animation info should be visible in the display or not.

  Parameters:
    `visible` - true to show the animation info

### getAnimationStringVisible

    public boolean getAnimationStringVisible()

  Return whether the animation info should be visible in the display or not.

  Returns:
    true if the animation info should be shown

### setWaitMessageVisible

    public void setWaitMessageVisible(boolean visible)

  Set whether the "please wait" info should be visible in the display or not.

  Parameters:
    `visible` - true to show the please wait info

### getWaitMessageVisible

    public boolean getWaitMessageVisible()

  Return whether the please wait info should be visible in the display or not.

  Returns:
    true if the "please wait" info should be shown

### getAnimationString

    public String[] getAnimationString()

  Return Array of `String`s describing the animation sequence

  Returns:
    The animation description

### setAnimationString

    public void setAnimationString(String[] animation)

  Set Array of `String`s describing the animation sequence

  Parameters:
    `animation` - a String[2] array describing the animation sequence

### getCursor

    public abstract double[] getCursor()

  Return an array giving the cursor location as (XAxis, YAxis, ZAxis) coordinates

  Returns:
    3 element `double` array of cursor coordinates.

### setCursorOn

    public abstract void setCursorOn(boolean on)

  set flag indicating whether the cursor should be displayed.

  Parameters:
    `on` - value of flag to set

### depth_cursor

    public abstract void depth_cursor(VisADRay ray)

  set a VisADRay along which to drag cursor in depth (in and out of screen)

  Parameters:
    `ray` - VisADRay to set

### drag_cursor

    public abstract void drag_cursor(VisADRay ray,
                                     boolean first)

  drag cursor parallel to plane of screen

  Parameters:
    `ray` - VisADRay that goes through new cursor location
    `first` - true to indicate this is first call to drag_cursor() for this drag

### setDirectOn

    public abstract void setDirectOn(boolean on)

  set flag indicating whether direct manipulation is active

  Parameters:
    `on` - value of flag to set

### drag_depth

    public abstract void drag_depth(float diff)

  drag cursor in depth (in and out of screen)

  Parameters:
    `diff` - amount to move cursor in depth (0.0 corresponds to no movement)

### anyDirects

    public abstract boolean anyDirects()

  Returns:
    flag indicating whether there are any direct manipulation DataRenderers linked to Display

### getMouseBehavior

    public abstract MouseBehavior getMouseBehavior()

  Returns:
    the MouseBehavior for this display

### findDirect

    public abstract DataRenderer findDirect(VisADRay ray,
                                            int mouseModifiers)

  Returns a direct manipulation renderer if one is close to the specified ray (within pick threshold).

  Parameters:
    `ray` - The ray used to look for a nearby direct manipulation renderer.
    `mouseModifiers` - Value of InputEvent.getModifiers().
  Returns:
    DataRenderer or `null`.

### setCursorStringOn

    public void setCursorStringOn(boolean on)

  set flag indicating whether the cursor location String should be displayed.

  Parameters:
    `on` - value of flag to set

### getCursorStringVector

    public Vector getCursorStringVector()

  Return `Vector` of `String`s describing the cursor location, if cursor location display is enabled.

  Returns:
    The cursor location description as a Vector of Strings (an empty Vector if cursor location display is disabled).

### getCursorStringVectorUnconditional

    public Vector getCursorStringVectorUnconditional()

  Return `Vector` of `String`s describing the cursor location, regardless of whether cursor location display is enabled.

  Returns:
    The cursor location description as a Vector of Strings.

### getDirectAxisValue

    public double getDirectAxisValue(RealType type)

  get the value of a RealType if it is included in the cursor location

  Parameters:
    `type` - RealType whose value to get
  Returns:
    value of type, or NaN if it is not included in the cursor location

### getDirectAxisValue

    public double getDirectAxisValue(String name)

  get the value of a named RealType if it is included in the cursor location

  Parameters:
    `name` - String name of RealType whose value to get
  Returns:
    value of named RealType, or NaN if it is not included in the cursor location

### setCursorStringVector

    public void setCursorStringVector(Vector vect)

  Set `Vector` of `String`s describing the cursor location by copy; this is invoked by direct manipulation renderers.

  Parameters:
    `vect` - String descriptions of cursor location.

### setCursorStringVector

    public void setCursorStringVector()

  Set `Vector` of `String`s describing the cursor location from the cursor location; this is invoked when the cursor location changes or the cursor display status changes

### render_trigger

    public void render_trigger()

  trigger the graphics API to render the scene graph to the screen; intended to be over-ridden by graphics-API-specific extensions of DisplayRenderer

### legalDisplayScalar

    public boolean legalDisplayScalar(DisplayRealType type)

  Return `true` if `type` is legal for this `DisplayRenderer`; for example, 2-D `DisplayRenderer`s use this to disallow mappings to ZAxis and Latitude.

  Parameters:
    `type` - The mapping type to check.
  Returns:
    `true` if `type` is legal.

### prepareAction

    public void prepareAction(Vector temp,
                              Vector tmap,
                              boolean go,
                              boolean initialize)
                       throws VisADException,
                              RemoteException

  prepare for transforming Data into scene graph depictions, including possible auto-scaling of ScalarMaps

  Parameters:
    `temp` - Vector of DataRenderers
    `tmap` - Vector of ScalarMaps
    `go` - flag indicating whether Data transforms are requested
    `initialize` - flag indicating whether auto-scaling is requested
  Throws:
    `VisADException` - a VisAD error occurred
    `RemoteException` - an RMI error occurred

### getTextureWidthMax

    public abstract int getTextureWidthMax()
                                    throws VisADException

  Throws:
    `VisADException`

### getTextureHeightMax

    public abstract int getTextureHeightMax()
                                     throws VisADException

  Throws:
    `VisADException`