## visad.bom
Class RubberBandBoxRendererJ3D

    java.lang.Object
      visad.DataRenderer
          visad.java3d.RendererJ3D
              visad.java3d.DirectManipulationRendererJ3D
                  visad.bom.RubberBandBoxRendererJ3D

All Implemented Interfaces:
  Cloneable

public class RubberBandBoxRendererJ3D
extends DirectManipulationRendererJ3D

RubberBandBoxRendererJ3D is the VisAD class for direct manipulation of rubber band boxes

Field Summary
`(package private) float[]` `default_values`

Fields inherited from class visad.java3d.RendererJ3D
``

Fields inherited from class visad.DataRenderer
`enabled, pickCrawlToCursor`

Constructor Summary
`RubberBandBoxRendererJ3D(RealType xarg, RealType yarg)` this DirectManipulationRenderer is quite different - it does not render its data, but only place values into its DataReference on right mouse button release; it uses xarg and yarg to determine spatial ScalarMaps
`RubberBandBoxRendererJ3D(RealType xarg, RealType yarg, int mmm, int mmv)` xarg and yarg determine spatial ScalarMaps; mmm and mmv determine whehter SHIFT or CTRL keys are required - this is needed since this is a greedy DirectManipulationRenderer that will grab any right mouse click (that intersects its 2-D sub-manifold)

Method Summary
`void` `addPoint(float[] x)` add point for temporary rendering; intended to be over-ridden by graphics-API-specific extensions of DataRenderer
`float` `checkClose(double[] origin, double[] direction)` check if ray intersects sub-manifold
`void` `checkDirect()` set isDirectManipulation = true if this DataRenderer supports direct manipulation for the MathType of its linked Data, and for its ScalarMaps; intended to be over-ridden by extensions of DataRenderer
`Object` `clone()`
`javax.media.j3d.BranchGroup` `doTransform()` don't render - just return BranchGroup for scene graph to render rectangle into
`void` `drag_direct(VisADRay ray, boolean first, int mouseModifiers)` modify Data values based on direct manipulation mouse actions
`CoordinateSystem` `getDisplayCoordinateSystem()`
`String` `getWhyNotDirect()`
`static void` `main(String[] args)` test RubberBandBoxRendererJ3D
`void` `release_direct()` mouse button released, ending direct manipulation
`void` `setSpatialValues(float[][] spatial_values)` set spatialValues from ShadowType.doTransform
`void` `stop_direct()` discontinue manipulating Data values for current mouse drag; (this only applies to the current mouse drag and is not a general disable)

Methods inherited from class visad.java3d.DirectManipulationRendererJ3D
`clearScene, isLegalTextureMap, setBranch, setLinks`

Methods inherited from class visad.java3d.RendererJ3D
`clearBranch, doAction, flush, getBranch, makeShadowFunctionType, makeShadowRealTupleType, makeShadowRealType, makeShadowSetType, makeShadowTextType, makeShadowTupleType, setBranchEarly, toggle`

Methods inherited from class visad.DataRenderer

`addException, checkAction, clearAVControls, clearExceptions, computeRanges, earthToSpatial, earthToSpatial, findRayManifoldIntersection, get_all_feasible, get_any_changed, get_any_transform_control, getBadScale, getDisplay, getDisplayRenderer, getEarthDimension, getEarthUnits, getEnabled, getExceptionVector, getIsDirectManipulation, getLastMouseModifiers, getLatLonIndices, getLatLonRange, getLink, getLinks, getPickCrawlToCursor, getRanges, getRealVectorTypes, isTransformControl, prepareAction, realCheckDirect, removeLink, set_all_feasible, setDisplay, setDisplayRenderer, setEarthSpatialData, setEarthSpatialDisplay, setIsDirectManipulation, setLastMouseModifiers, setLatLonIndices, setLinks, setPickCrawlToCursor, spatialToEarth, spatialToEarth, suppressExceptions`

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

Field Detail

### default_values

    float[] default_values

Constructor Detail

### RubberBandBoxRendererJ3D

    public RubberBandBoxRendererJ3D(RealType xarg,
                                    RealType yarg)

  this DirectManipulationRenderer is quite different - it does not render its data, but only place values into its DataReference on right mouse button release; it uses xarg and yarg to determine spatial ScalarMaps

### RubberBandBoxRendererJ3D

    public RubberBandBoxRendererJ3D(RealType xarg,
                                    RealType yarg,
                                    int mmm,
                                    int mmv)

  xarg and yarg determine spatial ScalarMaps; mmm and mmv determine whehter SHIFT or CTRL keys are required - this is needed since this is a greedy DirectManipulationRenderer that will grab any right mouse click (that intersects its 2-D sub-manifold)

Method Detail

### doTransform

    public javax.media.j3d.BranchGroup doTransform()
                                            throws VisADException,
                                                   RemoteException

  don't render - just return BranchGroup for scene graph to render rectangle into

  Overrides:
    `doTransform` in class `DirectManipulationRendererJ3D`
  Throws:
    `VisADException`
    `RemoteException`

### checkDirect

    public void checkDirect()
                     throws VisADException,
                            RemoteException

  Description copied from class: `DataRenderer`
  set isDirectManipulation = true if this DataRenderer supports direct manipulation for the MathType of its linked Data, and for its ScalarMaps; intended to be over-ridden by extensions of DataRenderer

  Overrides:
    `checkDirect` in class `DirectManipulationRendererJ3D`
  Throws:
    `VisADException`
    `RemoteException`

### getWhyNotDirect

    public String getWhyNotDirect()

  Overrides:
    `getWhyNotDirect` in class `DataRenderer`
  Returns:
    String with reason MathType and ScalarMaps do not qualify for direct manipulation

### addPoint

    public void addPoint(float[] x)
                  throws VisADException

  Description copied from class: `DataRenderer`
  add point for temporary rendering; intended to be over-ridden by graphics-API-specific extensions of DataRenderer

  Overrides:
    `addPoint` in class `DirectManipulationRendererJ3D`
  Throws:
    `VisADException`

### getDisplayCoordinateSystem

    public CoordinateSystem getDisplayCoordinateSystem()

  Overrides:
    `getDisplayCoordinateSystem` in class `DataRenderer`
  Returns:
    CoordinateSystem for spatial DisplayTupleType (null if DisplaySpatialCartesianTuple)

### setSpatialValues

    public void setSpatialValues(float[][] spatial_values)

  set spatialValues from ShadowType.doTransform

  Overrides:
    `setSpatialValues` in class `DataRenderer`
  Parameters:
    `spatial_values` - float[3][number_of_points] of 3-D locations of depiction points

### checkClose

    public float checkClose(double[] origin,
                            double[] direction)

  check if ray intersects sub-manifold

  Overrides:
    `checkClose` in class `DataRenderer`
  Parameters:
    `origin` - 3-D origin of ray
    `direction` - 3-D direction of ray
  Returns:
    minimum distance of ray to any point in spatialValues (spatial values for Data depiction)

### release_direct

    public void release_direct()

  mouse button released, ending direct manipulation

  Overrides:
    `release_direct` in class `DataRenderer`

### stop_direct

    public void stop_direct()

  Description copied from class: `DataRenderer`
  discontinue manipulating Data values for current mouse drag; (this only applies to the current mouse drag and is not a general disable)

  Overrides:
    `stop_direct` in class `DataRenderer`

### drag_direct

    public void drag_direct(VisADRay ray,
                            boolean first,
                            int mouseModifiers)

  Description copied from class: `DataRenderer`
  modify Data values based on direct manipulation mouse actions

  Overrides:
    `drag_direct` in class `DataRenderer`
  Parameters:
    `ray` - 3-D graphics coordinates of ray corresponding to mouse screen location
    `first` - flag if this is first call (for MouseEvent.MOUSE_PRESSED, not for MouseEvent.MOUSE_DRAGGED)
    `mouseModifiers` - value of InputEvent.getModifiers() from most recent direct manipulation mouse click

### clone

    public Object clone()

  Overrides:
    `clone` in class `DirectManipulationRendererJ3D`

### main

    public static void main(String[] args)
                     throws VisADException,
                            RemoteException

  test RubberBandBoxRendererJ3D

  Throws:
    `VisADException`
    `RemoteException`