Class ViewJComponentSurface
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- gov.nih.mipav.view.ViewJComponentBase
-
- gov.nih.mipav.view.renderer.J3D.surfaceview.plotterview.ViewJComponentSurface
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable
public class ViewJComponentSurface extends ViewJComponentBase
Component surface created from a 2D image. The intensity values are mapped like a relief map, with higher intensities making peaks and lower intensities forming valleys. A quad mesh is used to create the three-dimensional map. The same LUT from the image is used to colors the vertices of the quad mesh.- Version:
- 0.1 Aug 1, 2001
- Author:
- Matthew J. McAuliffe, Ph.D., Neva Cherniavsky
- See Also:
ViewJFrameSurfacePlotter, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private int[]cConnectVertex connection array.private javax.vecmath.Point3f[]cVertexVertex array.private RenderViewBaseframeFrame where the plotted surface is displayed.private ModelImageimageAStructure holding image.private float[]imageBufferABuffer which holds the pixel data.private int[]imageExtentsExtents of the image.private booleanlineModeFlag indicating if the surface is currently in line mode (true) or fill mode (false).private ModelLUTLUTaLookup table for image.private int[]lutBufferRemappedUsed to remap the LUT appropriately.private floatmaxBoxMaxBox value from the parent frame.private int[]pixBufferBuffer used to store ARGB images of the image presently being displayed.private javax.media.j3d.BranchGroupplottedRootBranch group that is the parent of the plotted surface.private ModelQuadMeshqMeshQuad mesh.private intsampleSizeSample size.private static longserialVersionUIDUse serialVersionUID for interoperability.private floatxBoxxBox, yBox and zBox values from the parent frame.private floatyBoxxBox, yBox and zBox values from the parent frame.private floatzBoxxBox, yBox and zBox values from the parent frame.-
Fields inherited from class gov.nih.mipav.view.ViewJComponentBase
ANNOTATION, BOTH, CENTER_VOI, CUBE_BOUNDS, DEFAULT, DELETE_POINT, DROPPER_PAINT, ELLIPSE, ERASER_PAINT, IMAGE_A, IMAGE_B, imageDim, img, imgB, interpMode, INTERPOLATE_A, INTERPOLATE_B, INTERPOLATE_BOTH, lastMouseX, lastMouseY, LEVELSET, LINE, LIVEWIRE, MAG_REGION, memImageA, memImageB, MOVE, MOVE_INTERSECTION_POINT, MOVE_POINT, MOVE_VOIPOINT, NEAREST_BOTH, NEW_POINT, NEW_VOI, OUT_OF_BOUNDS, PAINT_CAN, PAINT_VASC, PAINT_VOI, POINT_VOI, POLYLINE, POLYLINE_SLICE_VOI, PROBE, PROTRACTOR, QUICK_LUT, RECTANGLE, RECTANGLE3D, resolutionX, resolutionY, RETRACE, ROTATE, SELECT, showSliceNumber, sliceString, SMOOTH, SPLIT_VOI, textColor, TRANSLATE, VOI_3D, WAND, WIN_REGION, ZOOMING_IN, ZOOMING_OUT, zoomX, zoomY
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description ViewJComponentSurface(RenderViewBase _frame, ModelImage _imageA, ModelLUT _LUTa, int[] extents, int slice)Constructs a new component and sets up the variables.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddSurface()Sets up the surface by setting the color of the material to black, setting the polygon to no cull-face and a fill mode, and allowing intersections in case we want picking ability.private voidcalcQuadSurface(boolean forceUpdate)Calculates quad surface.voiddispose(boolean gcFlag)Sets all variables to null, disposes, and garbage collects if parameter is set.protected voidfinalize()Calls dispose.RenderViewBasegetFrame()Accessor that returns the parent frame for the component.ModelImagegetImageA()Accessor that returns the image A.ModelLUTgetLUTa()Accessor that gets the model LUT for image A.ModelQuadMeshgetQMesh()Accessor that returns the quad mesh, which represents the plotted surface.intgetSampleSize()Accessor that returns the sample size that created the quad mesh.private voidinitSurfaceBuffers()Initialize the global vertext and connection arrays.voidresample(int sample)Resamples and creates a new quad mesh, detaching the parent branch group and readding the surface.voidsetImageA(ModelImage image)Sets component's image A.voidsetLUTa(ModelLUT LUT)Accessor that sets the model LUT for the image A.voidsetPolygonMode(boolean line)Sets the polygon mode, if it has changed.voidsetQMesh(ModelQuadMesh quadMesh)Sets the quad mesh by detaching the parent branch group and readding the surface.voidsetSlice(int slice)sets the slice/frame # for display.private voidsetupLights()Create and initialize the eight lights in the scene graph.booleanshow(ModelLUT _LUTa, boolean forceShow, int _interpMode)Shows the surface, using the LUT to color the indices.-
Methods inherited from class gov.nih.mipav.view.ViewJComponentBase
disposeLocal, getImage, getInterpMode, getLastMouseX, getLastMouseY, getPreferredSize, getResolutionX, getResolutionY, getScaledX, getScaledY, getSelectedPaintColor, getShowMagIntensityEnabled, getSize, getZoomX, getZoomY, importImage, importImageB, LocalToScreen, makePaintBitmapBorder, makePaintImage, paintComponent, paintCursorBoxComponent, paintWindowComponent, paintWindowComponent, ScreenToLocal, setInterpolationMode, setResolutions, setShowSliceNumber, setSliceString, setTextColor, setZoom, setZoomExact, update
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
Use serialVersionUID for interoperability.- See Also:
- Constant Field Values
-
cConnect
private int[] cConnect
Vertex connection array.
-
cVertex
private javax.vecmath.Point3f[] cVertex
Vertex array.
-
frame
private RenderViewBase frame
Frame where the plotted surface is displayed.
-
imageA
private ModelImage imageA
Structure holding image.
-
imageBufferA
private float[] imageBufferA
Buffer which holds the pixel data.
-
imageExtents
private int[] imageExtents
Extents of the image.
-
lineMode
private boolean lineMode
Flag indicating if the surface is currently in line mode (true) or fill mode (false).
-
LUTa
private ModelLUT LUTa
Lookup table for image.
-
lutBufferRemapped
private int[] lutBufferRemapped
Used to remap the LUT appropriately.
-
maxBox
private float maxBox
MaxBox value from the parent frame.
-
pixBuffer
private int[] pixBuffer
Buffer used to store ARGB images of the image presently being displayed.
-
plottedRoot
private javax.media.j3d.BranchGroup plottedRoot
Branch group that is the parent of the plotted surface.
-
qMesh
private ModelQuadMesh qMesh
Quad mesh. This is the core of the component.
-
sampleSize
private int sampleSize
Sample size. This determines how many triangles are used in the quad mesh.
-
xBox
private float xBox
xBox, yBox and zBox values from the parent frame.
-
yBox
private float yBox
xBox, yBox and zBox values from the parent frame.
-
zBox
private float zBox
xBox, yBox and zBox values from the parent frame.
-
-
Constructor Detail
-
ViewJComponentSurface
public ViewJComponentSurface(RenderViewBase _frame, ModelImage _imageA, ModelLUT _LUTa, int[] extents, int slice)
Constructs a new component and sets up the variables.- Parameters:
_frame- Frame where image(s) will be displayed._imageA- Model of the image that will be displayed._LUTa- LUT used to display imageA.extents- Extents of image to be displayed.slice- Slice of 3D image to use, 0 if 2D image.
-
-
Method Detail
-
dispose
public void dispose(boolean gcFlag)
Sets all variables to null, disposes, and garbage collects if parameter is set.- Overrides:
disposein classViewJComponentBase- Parameters:
gcFlag- Iftruegarbage collector should be called.
-
getFrame
public RenderViewBase getFrame()
Accessor that returns the parent frame for the component.- Returns:
- The parent frame.
-
getImageA
public ModelImage getImageA()
Accessor that returns the image A.- Returns:
- imageA
-
getLUTa
public ModelLUT getLUTa()
Accessor that gets the model LUT for image A.- Returns:
- The model LUT.
-
getQMesh
public ModelQuadMesh getQMesh()
Accessor that returns the quad mesh, which represents the plotted surface.- Returns:
- The quad mesh.
-
getSampleSize
public int getSampleSize()
Accessor that returns the sample size that created the quad mesh.- Returns:
- The sample size.
-
resample
public void resample(int sample)
Resamples and creates a new quad mesh, detaching the parent branch group and readding the surface.- Parameters:
sample- New sample size.
-
setImageA
public void setImageA(ModelImage image)
Sets component's image A. Sets zoom to 1, 1.- Parameters:
image- Image to set to.
-
setLUTa
public void setLUTa(ModelLUT LUT)
Accessor that sets the model LUT for the image A.- Parameters:
LUT- The model LUT to set to.
-
setPolygonMode
public void setPolygonMode(boolean line)
Sets the polygon mode, if it has changed.- Parameters:
line-trueindicates set to line mode,falseindicates set to fill mode.
-
setQMesh
public void setQMesh(ModelQuadMesh quadMesh)
Sets the quad mesh by detaching the parent branch group and readding the surface.- Parameters:
quadMesh- Quad mesh to set to.
-
setSlice
public void setSlice(int slice)
sets the slice/frame # for display.- Parameters:
slice- slice number
-
show
public boolean show(ModelLUT _LUTa, boolean forceShow, int _interpMode)
Shows the surface, using the LUT to color the indices.- Parameters:
_LUTa- to change to new LUT for imageA else null.forceShow- Forces this method to import image and recalculate java image._interpMode- Image interpolation method (Nearest or Smooth).- Returns:
trueindicates the show was successful.
-
finalize
protected void finalize() throws java.lang.ThrowableCalls dispose.- Overrides:
finalizein classViewJComponentBase- Throws:
java.lang.Throwable- DOCUMENT ME!
-
addSurface
private void addSurface()
Sets up the surface by setting the color of the material to black, setting the polygon to no cull-face and a fill mode, and allowing intersections in case we want picking ability.
-
calcQuadSurface
private void calcQuadSurface(boolean forceUpdate)
Calculates quad surface. Sets up indices and connections between the indices, then sets the color of the indices based on the LUT.- Parameters:
forceUpdate-trueupdates Quad mesh,falsenot update Quad mesh.
-
initSurfaceBuffers
private void initSurfaceBuffers()
Initialize the global vertext and connection arrays.
-
setupLights
private void setupLights()
Create and initialize the eight lights in the scene graph. The lights are positioned at the eight vertices of the cube [-maxBox,maxBox]^3. Light 0 is at (-maxBox,-maxBox,-maxBox) and light 7 is at (maxBox,maxBox,maxBox). All are enabled. The default color for all lights is white. The default intensity is 1.
-
-