visad
Class DisplayRenderer

java.lang.Object
  extended by visad.DisplayRenderer
All Implemented Interfaces:
EventListener, ControlListener
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.


Constructor Summary
DisplayRenderer()
          Construct a new DisplayRenderer.
 
Method Summary
abstract  boolean anyDirects()
           
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 Strings describing the animation sequence
 boolean getAnimationStringVisible()
          Return whether the animation info should be visible in the display or not.
 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 Strings describing the cursor location, if cursor location display is enabled.
 Vector getCursorStringVectorUnconditional()
          Return Vector of Strings 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.
 boolean getRotateAboutCenter()
          Get the RotateAboutCenter property.
 boolean getScaleRotation()
          Get the ScaleRotation property.
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 DisplayRenderers 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 Strings 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 Strings 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 Strings 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
 void setRotateAboutCenter(boolean value)
          Set the RotateAboutCenter property.
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 setScaleRotation(boolean value)
          Set the ScaleRotation property.
 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
 

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 MonitorEvents.

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.

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 Strings describing the animation sequence

Returns:
The animation description

setAnimationString

public void setAnimationString(String[] animation)
Set Array of Strings 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 Strings 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 Strings 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 Strings 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 Strings 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 DisplayRenderers 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

setScaleRotation

public void setScaleRotation(boolean value)
Set the ScaleRotation property.

Parameters:
value - The new value for ScaleRotation

getScaleRotation

public boolean getScaleRotation()
Get the ScaleRotation property.

Returns:
The ScaleRotation

setRotateAboutCenter

public void setRotateAboutCenter(boolean value)
Set the RotateAboutCenter property.

Parameters:
value - The new value for RotateAboutCenter

getRotateAboutCenter

public boolean getRotateAboutCenter()
Get the RotateAboutCenter property.

Returns:
The RotateAboutCenter