edu.washington.biostr.sig.brainj3d.view3D
Class ColorizedVolumeSurface3DView

java.lang.Object
  extended by edu.washington.biostr.sig.brainj3d.data.DefaultDataView<D>
      extended by edu.washington.biostr.sig.brainj3d.data.SharingDataView<VolumeData,SurfaceDataViewUnion>
          extended by edu.washington.biostr.sig.brainj3d.view3D.ColorizedVolumeSurface3DView
All Implemented Interfaces:
DataView, Plane3DView, Surface3DView, View3D

public class ColorizedVolumeSurface3DView
extends SharingDataView<VolumeData,SurfaceDataViewUnion>
implements Surface3DView, Plane3DView

This class encapsulates the data view that combines volumetric data with a 3d surface to produce a color variant view on the 3d surface of the volumetric data.

Author:
Peter

Nested Class Summary
static class ColorizedVolumeSurface3DView.KernelMaskView
          This class acts as a dummy data view simply for holding a reference to the Mask Data used by the filter kernel to determine if data is inside or outside the brain.
 
Field Summary
protected  SurfaceVolumeDataController controller
           
protected  Helper helper
           
protected  VolumeArray kernelizedArray
           
static String PROP_DATA_SAMPLER
          String for extracting color scheme from parameters.
static String PROP_ENABLE_KERNEL
          String for extracting kernel status from parameters.
static String PROP_KERNEL_RADIUS
          String for extracting kernel radius from parameters.
static String PROP_KERNEL_STRENGTH
          String for extracting kernel strength from parameters.
protected  Surface3DView surfaceGeometryView
           
protected  edu.washington.biostr.sig.brainj3d.view3D.ColorizedVolumeSurface3DView.KernelizedVolumeDataView volDataView
           
protected  javax.vecmath.Vector3d voxelScale
           
 
Fields inherited from interface edu.washington.biostr.sig.brainj3d.model.Surface3DView
AMBIENT, DIFFUSE, EMISSIVE, INVERT, SCREEN_DOOR, SPECULAR, TRANSPARENCY, VERTEX_COLORS
 
Constructor Summary
ColorizedVolumeSurface3DView()
           
ColorizedVolumeSurface3DView(FileGroup key, Data data)
           
 
Method Summary
 void addedToModel(DataModel<?> model)
          Notify this data that it was added to the model.
 boolean canChange()
          If anything in this node can change, return true.
 boolean canChangeAppearance()
          Discover whether or not this object supports changing the appearance.
 boolean canChangeColors()
          Determine whether or not the we can set the colors for individual points.
 boolean canChangeNormals()
          Determine whether or not the we can set the colors for individual points.
 boolean canChangeVertices()
          Determine whether or not the we can set the colors for individual points.
 boolean canPick()
          If this object allows picking to select it, return this.
 boolean canPickGeometry()
          If we can do a detailed pick on this object and geometry (to determine the exact location on the model of the pick), this should be set to true.
 boolean canSwitchColors()
          If the view supports changing between per vertex color and appearance mode, this should return true.
protected  SurfaceDataViewUnion generateSharedData()
          Generate a new shared data if this is not shared.
 javax.media.j3d.Appearance getAppearance()
          Get the appearance used by this view if a single appearance exists.
 Surface3DView getAttachedView()
          Gets the surface model view attached to this volume data view.
 DataController getController(DataKey dataKey, DoTarget target)
          Get the controller for this DataView.
 VolumeData getData()
          Return the data object associated with this view.
 javax.media.j3d.GeometryArray[] getGeoArrays()
           
protected  Helper getHelper()
          Attempts to get the helper associated with this DataView.
 int getInterval()
           
 ColorLookupTable getLookupTable()
          Gets the ColorLookupTable in use by this view.
 int getMaxTime()
           
 int getMinTime()
           
 javax.media.j3d.BranchGroup getNode()
          In order to display 3D Models we need to have a node that represents an object or set of objects.
 javax.media.j3d.BranchGroup[] getNodesToDetach()
          Get all of the nodes to detach.
 Plane3D getPlane3D()
          Get a Plane3D that this view contains.
 String getSpace()
           
 javax.media.j3d.Transform3D getSpaceTransform()
           
 String getUnit()
           
 String getViewName()
          Get a name that should identify this type of view, but not this individual view.
 boolean isPlane3D()
          If the object is a cutawaynode, return true.
 void removedFromModel()
          Notify this data that it was removed from model.
 void setAttachedView(Surface3DView otherView)
          Attaches this volume data view to the specified surface view.
 void setControllerBlendFunction(String name)
          Sets the blend function on this data view's controller.
 void setData(FileGroup key, Data data)
          Initialize this view with the given data and the specified meta data (in the form of a map of tags).
throw an ImmutableException if it is called more than once.
 void setDataSampler(String name)
          Sets the data sampling method to the specified method.
 void setDefaultParameters(Set<Tag> metadata)
          Restore the defaults parameters.
 Object setParameter(String parameter, Object value, boolean beLazy)
          Set a parameter
protected  boolean setParameter(String parameter, Object value, Object oldValue, boolean beLazy)
          Set a parameter.
 void setParameters(Map<String,Object> parameters)
          Set the parameters to have the data in parameters, plus any disjoint parameters.
 void setSpaceTransform(String newSpace, javax.media.j3d.Transform3D trans)
           
 void setUnit(String newUnit)
           
 void setUseColors(boolean useColors)
          Sometimes a view can decide whether or not to use explicit colors for each vertex or the material color.
 boolean supportsAlternateAppearance()
          If we can set the alternate appearance in order to select this object, this should be true.
 
Methods inherited from class edu.washington.biostr.sig.brainj3d.data.SharingDataView
countSharedViews, getAll, getShared, setShared, share
 
Methods inherited from class edu.washington.biostr.sig.brainj3d.data.DefaultDataView
equals, getCastData, getDataKey, getKey, getParameter, getParameters, getTarget, hashCode, hasTime, setParameter, setTarget, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.washington.biostr.sig.brainj3d.data.DataView
getDataKey, getKey, getParameters, getTarget, hasTime, setParameter, setTarget
 

Field Detail

PROP_DATA_SAMPLER

public static final String PROP_DATA_SAMPLER
String for extracting color scheme from parameters. Value is String.

See Also:
Constant Field Values

PROP_ENABLE_KERNEL

public static final String PROP_ENABLE_KERNEL
String for extracting kernel status from parameters. Value is Boolean.

See Also:
Constant Field Values

PROP_KERNEL_RADIUS

public static final String PROP_KERNEL_RADIUS
String for extracting kernel radius from parameters. Value is Double.

See Also:
Constant Field Values

PROP_KERNEL_STRENGTH

public static final String PROP_KERNEL_STRENGTH
String for extracting kernel strength from parameters. Value is Double.

See Also:
Constant Field Values

volDataView

protected edu.washington.biostr.sig.brainj3d.view3D.ColorizedVolumeSurface3DView.KernelizedVolumeDataView volDataView

kernelizedArray

protected VolumeArray kernelizedArray

voxelScale

protected javax.vecmath.Vector3d voxelScale

surfaceGeometryView

protected Surface3DView surfaceGeometryView

controller

protected SurfaceVolumeDataController controller

helper

protected Helper helper
Constructor Detail

ColorizedVolumeSurface3DView

public ColorizedVolumeSurface3DView()

ColorizedVolumeSurface3DView

public ColorizedVolumeSurface3DView(FileGroup key,
                                    Data data)
Method Detail

getNode

public javax.media.j3d.BranchGroup getNode()
Description copied from interface: Surface3DView
In order to display 3D Models we need to have a node that represents an object or set of objects. Since this view will not only be added to a single parent, you should return the same node each time this is called. It may be compiled or made live after being returned so all capabilities that need to be set should be set before the object is returned.

Specified by:
getNode in interface Surface3DView
Returns:

isPlane3D

public boolean isPlane3D()
Description copied from interface: Surface3DView
If the object is a cutawaynode, return true.

Specified by:
isPlane3D in interface Surface3DView
Returns:

getPlane3D

public Plane3D getPlane3D()
Description copied from interface: Plane3DView
Get a Plane3D that this view contains. If for whatever reason it doesn't have one, return null.

Specified by:
getPlane3D in interface Plane3DView
Returns:
A Plane3D or null.

setDataSampler

public void setDataSampler(String name)
Sets the data sampling method to the specified method. Triggers invalidation.

Parameters:
name -

getHelper

protected final Helper getHelper()
Attempts to get the helper associated with this DataView. The helper may not be available until the dataview has been sufficently loaded.


getAppearance

public javax.media.j3d.Appearance getAppearance()
Description copied from interface: Surface3DView
Get the appearance used by this view if a single appearance exists.

Specified by:
getAppearance in interface Surface3DView
Returns:
null if a single appearance doesn't exist, the appearance otherwise

canChangeAppearance

public boolean canChangeAppearance()
Description copied from interface: Surface3DView
Discover whether or not this object supports changing the appearance. If it does, the appearance returned from getAppearance should be modifiable.

Specified by:
canChangeAppearance in interface Surface3DView
Returns:

canChangeColors

public boolean canChangeColors()
Description copied from interface: Surface3DView
Determine whether or not the we can set the colors for individual points.

Specified by:
canChangeColors in interface Surface3DView
Returns:

canChangeNormals

public boolean canChangeNormals()
Description copied from interface: Surface3DView
Determine whether or not the we can set the colors for individual points.

Specified by:
canChangeNormals in interface Surface3DView
Returns:

canChangeVertices

public boolean canChangeVertices()
Description copied from interface: Surface3DView
Determine whether or not the we can set the colors for individual points.

Specified by:
canChangeVertices in interface Surface3DView
Returns:

canChange

public boolean canChange()
Description copied from interface: Surface3DView
If anything in this node can change, return true. The node must also have all of the capabilities set properly
setCapability(BranchGroup.ALLOW_CHILDREN_WRITE) is recommended.

Specified by:
canChange in interface Surface3DView
Returns:

canPick

public boolean canPick()
Description copied from interface: Surface3DView
If this object allows picking to select it, return this.

Specified by:
canPick in interface Surface3DView
Returns:
See Also:
PickTools.INTERSECT_TEST

canPickGeometry

public boolean canPickGeometry()
Description copied from interface: Surface3DView
If we can do a detailed pick on this object and geometry (to determine the exact location on the model of the pick), this should be set to true.

Specified by:
canPickGeometry in interface Surface3DView
Returns:
See Also:
PickTools.INTERSECT_FULL

supportsAlternateAppearance

public boolean supportsAlternateAppearance()
Description copied from interface: Surface3DView
If we can set the alternate appearance in order to select this object, this should be true.

Specified by:
supportsAlternateAppearance in interface Surface3DView
Returns:

setUseColors

public void setUseColors(boolean useColors)
Description copied from interface: Surface3DView
Sometimes a view can decide whether or not to use explicit colors for each vertex or the material color. If it supports these behaviors, this should switch between them. Otherwise it should return quietly.

Specified by:
setUseColors in interface Surface3DView

canSwitchColors

public boolean canSwitchColors()
Description copied from interface: Surface3DView
If the view supports changing between per vertex color and appearance mode, this should return true.

Specified by:
canSwitchColors in interface Surface3DView
Returns:

getGeoArrays

public javax.media.j3d.GeometryArray[] getGeoArrays()
Specified by:
getGeoArrays in interface Surface3DView

setUnit

public void setUnit(String newUnit)
Specified by:
setUnit in interface View3D

getUnit

public String getUnit()
Specified by:
getUnit in interface View3D

getSpace

public String getSpace()
Specified by:
getSpace in interface View3D

setSpaceTransform

public void setSpaceTransform(String newSpace,
                              javax.media.j3d.Transform3D trans)
Specified by:
setSpaceTransform in interface View3D

getSpaceTransform

public javax.media.j3d.Transform3D getSpaceTransform()
Specified by:
getSpaceTransform in interface View3D

getController

public DataController getController(DataKey dataKey,
                                    DoTarget target)
Description copied from interface: DataView
Get the controller for this DataView.

Specified by:
getController in interface DataView
target - The target or null if the target remains unchanged
Returns:

getViewName

public String getViewName()
Description copied from interface: DataView
Get a name that should identify this type of view, but not this individual view.

Specified by:
getViewName in interface DataView
Returns:

setParameter

public Object setParameter(String parameter,
                           Object value,
                           boolean beLazy)
Description copied from class: DefaultDataView
Set a parameter

Overrides:
setParameter in class DefaultDataView<VolumeData>
beLazy - true if we should defer any lengthy processing. The last modified parameter must have use false.
Returns:
the old value

setParameter

protected boolean setParameter(String parameter,
                               Object value,
                               Object oldValue,
                               boolean beLazy)
Description copied from class: DefaultDataView
Set a parameter. When a bulk set is performed, this is called multiple times.
Default implementation just returns false.

Overrides:
setParameter in class DefaultDataView<VolumeData>
Returns:
true if anything changed.

setParameters

public void setParameters(Map<String,Object> parameters)
Description copied from class: DefaultDataView
Set the parameters to have the data in parameters, plus any disjoint parameters.

Specified by:
setParameters in interface DataView
Overrides:
setParameters in class DefaultDataView<VolumeData>

setDefaultParameters

public void setDefaultParameters(Set<Tag> metadata)
Description copied from class: DefaultDataView
Restore the defaults parameters.

Specified by:
setDefaultParameters in interface DataView
Overrides:
setDefaultParameters in class DefaultDataView<VolumeData>
Parameters:
metadata - Use metadata to customize the view.

getMaxTime

public int getMaxTime()
Specified by:
getMaxTime in interface DataView
Overrides:
getMaxTime in class DefaultDataView<VolumeData>
Returns:
the maximum time value.

getMinTime

public int getMinTime()
Specified by:
getMinTime in interface DataView
Overrides:
getMinTime in class DefaultDataView<VolumeData>
Returns:
the minimum time value

getInterval

public int getInterval()
Specified by:
getInterval in interface DataView
Overrides:
getInterval in class DefaultDataView<VolumeData>
Returns:
the interval between time points.

setData

public void setData(FileGroup key,
                    Data data)
Description copied from interface: DataView
Initialize this view with the given data and the specified meta data (in the form of a map of tags).
throw an ImmutableException if it is called more than once. If the data is an inappropriate type, this should throw a ClassCastException. Acceptable types should be clearly documented.

Specified by:
setData in interface DataView
Overrides:
setData in class DefaultDataView<VolumeData>

getData

public VolumeData getData()
Description copied from interface: DataView
Return the data object associated with this view.

Specified by:
getData in interface DataView
Overrides:
getData in class DefaultDataView<VolumeData>
Returns:

addedToModel

public void addedToModel(DataModel<?> model)
Description copied from class: DefaultDataView
Notify this data that it was added to the model.

Specified by:
addedToModel in interface DataView
Overrides:
addedToModel in class SharingDataView<VolumeData,SurfaceDataViewUnion>

removedFromModel

public void removedFromModel()
Description copied from class: DefaultDataView
Notify this data that it was removed from model.

Specified by:
removedFromModel in interface DataView
Overrides:
removedFromModel in class DefaultDataView<VolumeData>

getNodesToDetach

public javax.media.j3d.BranchGroup[] getNodesToDetach()
Description copied from interface: Surface3DView
Get all of the nodes to detach. This is called immediately after removedFromModel

Specified by:
getNodesToDetach in interface Surface3DView
Returns:

setAttachedView

public void setAttachedView(Surface3DView otherView)
Attaches this volume data view to the specified surface view.

Parameters:
otherView -

getAttachedView

public Surface3DView getAttachedView()
Gets the surface model view attached to this volume data view.

Returns:

getLookupTable

public ColorLookupTable getLookupTable()
Gets the ColorLookupTable in use by this view.

Returns:

generateSharedData

protected SurfaceDataViewUnion generateSharedData()
Description copied from class: SharingDataView
Generate a new shared data if this is not shared.

Specified by:
generateSharedData in class SharingDataView<VolumeData,SurfaceDataViewUnion>
Returns:

setControllerBlendFunction

public void setControllerBlendFunction(String name)
Sets the blend function on this data view's controller.

Parameters:
name -


Copyright © 2006 University of Washington. All Rights Reserved.