## visad.bom
Class BarbManipulationRendererJ2D

    java.lang.Object
      visad.DataRenderer
          visad.java2d.RendererJ2D
              visad.java2d.DirectManipulationRendererJ2D
                  visad.bom.BarbManipulationRendererJ2D

All Implemented Interfaces:
  BarbRenderer, Cloneable

public class BarbManipulationRendererJ2D
extends DirectManipulationRendererJ2D
implements BarbRenderer

BarbManipulationRendererJ2D is the VisAD class for direct manipulation rendering of wind barbs under Java2D

Field Summary
`(package private) static int` `N`

Fields inherited from class visad.java2d.DirectManipulationRendererJ2D
``

Fields inherited from class visad.java2d.RendererJ2D
``

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

Constructor Summary
`BarbManipulationRendererJ2D()` this DataRenderer supports direct manipulation for Tuple representations of wind barbs; two of the Tuple's Real components must be mapped to Flow1X and Flow1Y, or Flow2X and Flow2Y

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)` find minimum distance from ray to barb tail
`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()`
`void` `drag_direct(VisADRay ray, boolean first, int mouseModifiers)` modify Data values based on direct manipulation mouse actions
`boolean` `getKnotsConvert()`
`String` `getWhyNotDirect()`
`static void` `main(String[] args)` test BarbManipulationRendererJ2D

`ShadowType`

`makeShadowFunctionType(FunctionType type, DataDisplayLink link, ShadowType parent)`
factory method for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowFunctionType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

`ShadowType`

`makeShadowRealTupleType(RealTupleType type, DataDisplayLink link, ShadowType parent)`
factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowRealTupleType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

`ShadowType`

`makeShadowRealType(RealType type, DataDisplayLink link, ShadowType parent)`
factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowRealType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

`ShadowType`

`makeShadowSetType(SetType type, DataDisplayLink link, ShadowType parent)`
factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowSetType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

`ShadowType`

`makeShadowTupleType(TupleType type, DataDisplayLink link, ShadowType parent)`
factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowTupleType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

`float[]` `makeVector(boolean south, float x, float y, float z, float scale, float pt_size, float f0, float f1, float[] vx, float[] vy, float[] vz, int[] numv, float[] tx, float[] ty, float[] tz, int[] numt)` dummy for BarbRenderer
`void` `release_direct()` mouse button released, ending direct manipulation
`void` `setKnotsConvert(boolean enable)`
`void` `setSpatialValues(float[][] spatial_values)` set spatialValues from ShadowType.doTransform
`void` `setVectorSpatialValues(float[] mbarb, int which)`
`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.java2d.DirectManipulationRendererJ2D
`doTransform, getExtraBranch, isLegalTextureMap, setLinks`

Methods inherited from class visad.java2d.RendererJ2D
`clearBranch, clearScene, doAction, makeShadowTextType, 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, getDisplayCoordinateSystem, 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

### N

    static final int N

See Also:
  Constant Field Values

Constructor Detail

### BarbManipulationRendererJ2D

    public BarbManipulationRendererJ2D()

  this DataRenderer supports direct manipulation for Tuple representations of wind barbs; two of the Tuple's Real components must be mapped to Flow1X and Flow1Y, or Flow2X and Flow2Y

Method Detail

### makeShadowFunctionType

    public ShadowType makeShadowFunctionType(FunctionType type,
                                             DataDisplayLink link,
                                             ShadowType parent)
                                      throws VisADException,
                                             RemoteException

  Description copied from class: `DataRenderer`
  factory method for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowFunctionType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

  Overrides:
    `makeShadowFunctionType` in class `RendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### makeShadowRealTupleType

    public ShadowType makeShadowRealTupleType(RealTupleType type,
                                              DataDisplayLink link,
                                              ShadowType parent)
                                       throws VisADException,
                                              RemoteException

  Description copied from class: `DataRenderer`
  factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowRealTupleType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

  Overrides:
    `makeShadowRealTupleType` in class `RendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### makeShadowRealType

    public ShadowType makeShadowRealType(RealType type,
                                         DataDisplayLink link,
                                         ShadowType parent)
                                  throws VisADException,
                                         RemoteException

  Description copied from class: `DataRenderer`
  factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowRealType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

  Overrides:
    `makeShadowRealType` in class `RendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### makeShadowSetType

    public ShadowType makeShadowSetType(SetType type,
                                        DataDisplayLink link,
                                        ShadowType parent)
                                 throws VisADException,
                                        RemoteException

  Description copied from class: `DataRenderer`
  factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowSetType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

  Overrides:
    `makeShadowSetType` in class `RendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### makeShadowTupleType

    public ShadowType makeShadowTupleType(TupleType type,
                                          DataDisplayLink link,
                                          ShadowType parent)
                                   throws VisADException,
                                          RemoteException

  Description copied from class: `DataRenderer`
  factory for constructing a subclass of ShadowType appropriate for the graphics API, that also adapts ShadowTupleType; ShadowType trees are constructed that 'shadow' the MathType trees of Data to be depicted, via recursive calls to buildShadowType() methods of MathType sub-classes, to DataRenderer.makeShadow*Type() methods, to Shadow*Type constructors, then back to buildShadowType() methods; the recursive call chain is initiated by DataDisplayLink.prepareData() calls to buildShadowType() methods of MathType sub-classes;

  Overrides:
    `makeShadowTupleType` in class `RendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### makeVector

    public float[] makeVector(boolean south,
                              float x,
                              float y,
                              float z,
                              float scale,
                              float pt_size,
                              float f0,
                              float f1,
                              float[] vx,
                              float[] vy,
                              float[] vz,
                              int[] numv,
                              float[] tx,
                              float[] ty,
                              float[] tz,
                              int[] numt)

  dummy for BarbRenderer

  Specified by:
    `makeVector` in interface `BarbRenderer`

### setKnotsConvert

    public void setKnotsConvert(boolean enable)

  Specified by:
    `setKnotsConvert` in interface `BarbRenderer`

### getKnotsConvert

    public boolean getKnotsConvert()

  Specified by:
    `getKnotsConvert` in interface `BarbRenderer`

### getWhyNotDirect

    public String getWhyNotDirect()

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

### 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 `DirectManipulationRendererJ2D`
  Throws:
    `VisADException`
    `RemoteException`

### 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 `DirectManipulationRendererJ2D`
  Throws:
    `VisADException`

### setVectorSpatialValues

    public void setVectorSpatialValues(float[] mbarb,
                                       int which)

### 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)

  find minimum distance from ray to barb tail

  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 `DirectManipulationRendererJ2D`

### main

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

  test BarbManipulationRendererJ2D

  Throws:
    `VisADException`
    `RemoteException`