visad.bom
Class PointManipulationRendererJ3D

java.lang.Object
  extended by visad.DataRenderer
      extended by visad.java3d.RendererJ3D
          extended by visad.java3d.DirectManipulationRendererJ3D
              extended by visad.bom.PointManipulationRendererJ3D
All Implemented Interfaces:
Cloneable

public class PointManipulationRendererJ3D
extends DirectManipulationRendererJ3D

PointManipulationRendererJ3D is the VisAD class for direct manipulation of single points


Field Summary
 
Fields inherited from class visad.DataRenderer
enabled, pickCrawlToCursor
 
Constructor Summary
PointManipulationRendererJ3D(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 press; it uses xarg and yarg to determine spatial ScalarMaps
PointManipulationRendererJ3D(RealType xarg, RealType yarg, int mmm, int mmv)
          xarg and yarg determine spatial ScalarMaps; mmm and mmv determine whether 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()
           
 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 PointManipulationRendererJ3D
 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, constrainDragPoint, 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, release_direct, 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
 

Constructor Detail

PointManipulationRendererJ3D

public PointManipulationRendererJ3D(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 press; it uses xarg and yarg to determine spatial ScalarMaps


PointManipulationRendererJ3D

public PointManipulationRendererJ3D(RealType xarg,
                                    RealType yarg,
                                    int mmm,
                                    int mmv)
xarg and yarg determine spatial ScalarMaps; mmm and mmv determine whether 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)

Parameters:
mmm - - "Mouse Modifier Mask", matches the modifiers we want plus all that we don't want
mmv - - "Mouse Modifier Value", equals the subset of mask that we want to match
Method Detail

doTransform

public 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 - a VisAD error occurred
RemoteException - an RMI error occurred

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
Parameters:
x - 3-D graphics coordinates of point to render
Throws:
VisADException - a VisAD error occurred

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:
float, 0 - hit, Float.MAX_VALUE - no hit

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
Returns:
a copy of this DataRenderer

main

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

Throws:
VisADException
RemoteException