Class JPanelSurfaceTexture

  • All Implemented Interfaces:
    ViewImageUpdateInterface, java.awt.event.ActionListener, java.awt.event.FocusListener, java.awt.event.ItemListener, java.awt.event.KeyListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

    public class JPanelSurfaceTexture
    extends JPanelRendererJ3D
    implements ViewImageUpdateInterface
    JPanelSurfaceTexture. Enables texture-mapping of the ModelImage data onto a surface triangle mesh. The Texture coordinates of the mesh are calculated in the SurfaceMask class. This class creates the ImageComponent3D object that is passed to the Texture3D object when the surface display attributes (TextureUnitState) are created. The ImageComponent3D object contained within this class updates when the user changes the ModelLUT associated with the texture.

    The user can change the ModelLUT independently of the ModelLUT associated with the ModelImage, or if the user selects the option of using the ModelLUT associated with the ModelImage, then the texture updates as the user updates that LUT. This class implements the ViewImageUpdateInterface to capture LUT changes.

    See Also:
    JPanelSurface.java, SurfaceMask.java, ModelImage.java, Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent event)
      actionPerformed, listens for interface events.
      private void createVolumeTexture()
      Creates a 3D Texture object for the ModelImage displayed in the SurfaceRender object.
      void dispose()
      Removes this object from the ModelImage imageDisplayListener list.
      private javax.media.j3d.ImageComponent3D generateVolumeTexture()
      generates an ImageComponent3D containing the ModelImage data.
      boolean getEnabled()
      Returns whether the ModelTriangleMesh is to be displayed with the ModelImage data as a texture or not.
      ModelImage getImageLink()
      Returns The SurfaceRender ModelImage imageA for linking to the LUT.
      ModelImage getImageSeparate()
      Returns the ModelImage associated with the independent LUT.
      ModelLUT getLUT()
      Return the current ModelLUT:.
      javax.swing.JPanel getMainPanel()
      Returns the mainPanel.
      ModelRGB getRGBT()
      Return the current ModelRGBT:.
      ModelImage getTextureImage()
      Returns The ModelImage that is the data source for the Texture3D.
      int getTextureStatus()
      Returns the texture status, either TEXTURE, VERTEX_COLOR, or NONE.
      javax.media.j3d.TextureUnitState[] getTextureUnitState()
      Returns the volume texture TextureUnitState.
      private void init()
      Initializes the interface, and generates the first default texture.
      private void initLUT()
      Initializes or re-initializes the Histogram LUT interface based on the currently-loaded ModelImage.
      private void loadingImage()
      Load a new ModelImage to use for the 3D Texture display:
      void setEnabled​(boolean flag)
      Enables or disables the interface.
      void setRGBTA​(ModelRGB RGBTa)
      Update the ModelRGB associated with the separate texture, and regenerate the ImageComponente3D volume texture.
      void setRGBTB​(ModelRGB RGBTb)
      Update the ModelRGB associated with the ModelImage texture, and regenerate the ImageComponente3D volume texture.
      void setSlice​(int slice)
      ViewImageUpdateInterface, unused here.
      void setTimeSlice​(int tSlice)
      ViewImageUpdateInterface, unused here.
      boolean updateImageExtents()
      ViewImageUpdateInterface, unused here.
      boolean updateImages()
      ViewImageUpdateInterface, unused here.
      boolean updateImages​(boolean flag)
      ViewImageUpdateInterface, unused here.
      boolean updateImages​(ModelLUT LUTa, ModelLUT LUTb, boolean flag, int interpMode)
      updateImages, called when the ModelLUT changes.
      void updateSurfaceTextureImage​(java.util.BitSet paintMask, javax.vecmath.Color4f kColor)
      updateSurfaceTextureImage.
      private void updateTexture()
      Updaes the ImageComponent3D data if the texture display is turned on.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
      • 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
      • 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, 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
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.awt.event.FocusListener

        focusGained, focusLost
      • Methods inherited from interface java.awt.event.ItemListener

        itemStateChanged
      • Methods inherited from interface java.awt.event.KeyListener

        keyPressed, keyReleased, keyTyped
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Use serialVersionUID for interoperability.
        See Also:
        Constant Field Values
      • TEXTURE

        public static final int TEXTURE
        Displays the ModelImage with 3D Texture-mapping :.
        See Also:
        Constant Field Values
      • VERTEX_COLOR

        public static final int VERTEX_COLOR
        Displays the ModelImage with per-vertex colors:.
        See Also:
        Constant Field Values
      • mHistogram

        private JFrameHistogram mHistogram
        Display the independent LUT for Black/White images.
      • mImageA

        private ModelImage mImageA
        ModelImage used to generate the 3D texture:.
      • mImageALink

        private ModelImage mImageALink
        Reference to ModelImage A for linking the texture to the imageA LUT.
      • mImageAsTextureRadioButton

        private javax.swing.JRadioButton mImageAsTextureRadioButton
        RadioButton for turing on the surface image texture:.
      • mImageAsVertexColorRadioButton

        private javax.swing.JRadioButton mImageAsVertexColorRadioButton
        RadioButton for turing on the surface image per-vertex color:.
      • mImageDirName

        private java.lang.String mImageDirName
        Stores the currently-loaded ModelImage directory name:.
      • mImageFileName

        private java.lang.String mImageFileName
        Stores the currently-loaded ModelImage file name:.
      • mImageFileNameLabel

        private javax.swing.JLabel mImageFileNameLabel
        Display the currently-loaded ModelImage file name:.
      • mImageNoneRadioButton

        private javax.swing.JRadioButton mImageNoneRadioButton
        RadioButton for turing off the surface image:.
      • mLoadImageButton

        private javax.swing.JButton mLoadImageButton
        Load a new ModelImage:.
      • mLUTButtonGroup

        private javax.swing.ButtonGroup mLUTButtonGroup
        Grouping the radio buttons:.
      • mLUTImageA

        private ModelImage mLUTImageA
        Independent ModelImage for independent LUT.
      • mLUTModel

        private ModelLUT mLUTModel
        The LUT associated with the ModelImage imageA:.
      • mLUTSeparate

        private ModelLUT mLUTSeparate
        The LUT associated with the independent texture LUT:.
      • mModelLUTRadioButton

        private javax.swing.JRadioButton mModelLUTRadioButton
        Use the ModelImage LUT.
      • mNewLUTRadioButton

        private javax.swing.JRadioButton mNewLUTRadioButton
        Use a separate LUT.
      • mPatientSlice

        private PatientSlice mPatientSlice
        Renders the ModelImage data with LUT changes.
      • mRGBModel

        private ModelRGB mRGBModel
        The RGB LUT associated with the ModelImage imageA:.
      • mRGBSeparate

        private ModelRGB mRGBSeparate
        The RGB LUT associated with the independent texture LUT:.
      • mSurfaceTextureImage

        private javax.media.j3d.ImageComponent3D mSurfaceTextureImage
        The ModelImage texture with LUT changes, used with the Texture3D.
      • mTexture

        private javax.media.j3d.Texture3D mTexture
        3D Texture used to display the ModelImage data as a texture mapped onto the ModelTriangleMesh.
      • mTextureButtonGroup

        private javax.swing.ButtonGroup mTextureButtonGroup
        Grouping the radio buttons:.
      • mTextureStatus

        private int mTextureStatus
        Currently selected ModelImage display type:.
      • mTextureUnitState

        private javax.media.j3d.TextureUnitState[] mTextureUnitState
        TextureUnitState contains texture information for the rendered surfaces:.
    • Constructor Detail

      • JPanelSurfaceTexture

        public JPanelSurfaceTexture​(SurfaceRender kView,
                                    ModelImage imageA)
        Constructor:
        Parameters:
        kView - the SurfaceRender this panel is displayed with
        imageA - the ModelImage used to generate the volume texture.
    • Method Detail

      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent event)
        actionPerformed, listens for interface events.
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
        Specified by:
        actionPerformed in class JPanelRendererBase
        Parameters:
        event - ActionEvent generated by the interface.
      • dispose

        public void dispose()
        Removes this object from the ModelImage imageDisplayListener list.
      • getEnabled

        public boolean getEnabled()
        Returns whether the ModelTriangleMesh is to be displayed with the ModelImage data as a texture or not.
        Returns:
        true when the ModelImageMesh is texture-mapped, false otherwise.
      • getImageLink

        public ModelImage getImageLink()
        Returns The SurfaceRender ModelImage imageA for linking to the LUT.
        Returns:
        mImageALink, for identifying the ModelLUT associated with mImageA.
      • getImageSeparate

        public ModelImage getImageSeparate()
        Returns the ModelImage associated with the independent LUT.
        Returns:
        the ModelImage associated with the independent LUT
      • getLUT

        public ModelLUT getLUT()
        Return the current ModelLUT:.
        Returns:
        the currently used ModelLUT
      • getMainPanel

        public javax.swing.JPanel getMainPanel()
        Returns the mainPanel.
        Specified by:
        getMainPanel in class JPanelRendererBase
        Returns:
        mainPanel;
      • getRGBT

        public ModelRGB getRGBT()
        Return the current ModelRGBT:.
        Returns:
        the currently used ModelRGBT
      • getTextureImage

        public ModelImage getTextureImage()
        Returns The ModelImage that is the data source for the Texture3D.
        Returns:
        mImageA, the ModelImage used to generate the Texture3D
      • getTextureStatus

        public int getTextureStatus()
        Returns the texture status, either TEXTURE, VERTEX_COLOR, or NONE.
        Returns:
        TEXTURE, VERTEX_COLOR, or NONE
      • getTextureUnitState

        public javax.media.j3d.TextureUnitState[] getTextureUnitState()
        Returns the volume texture TextureUnitState.
        Returns:
        mTextureUnitState, the volume texture data.
      • setEnabled

        public void setEnabled​(boolean flag)
        Enables or disables the interface. Called when a surface is added/removed from the JPanelSurface class.
        Overrides:
        setEnabled in class javax.swing.JComponent
        Parameters:
        flag - when true enable the interface, when false disable the interface.
      • setRGBTA

        public void setRGBTA​(ModelRGB RGBTa)
        Update the ModelRGB associated with the separate texture, and regenerate the ImageComponente3D volume texture.
        Parameters:
        RGBTa - the new ModelRGB for the separate texture.
      • setRGBTB

        public void setRGBTB​(ModelRGB RGBTb)
        Update the ModelRGB associated with the ModelImage texture, and regenerate the ImageComponente3D volume texture.
        Parameters:
        RGBTb - the new ModelRGB for the ModelImage texture.
      • setSlice

        public void setSlice​(int slice)
        ViewImageUpdateInterface, unused here.
        Specified by:
        setSlice in interface ViewImageUpdateInterface
        Parameters:
        slice - DOCUMENT ME!
      • setTimeSlice

        public void setTimeSlice​(int tSlice)
        ViewImageUpdateInterface, unused here.
        Specified by:
        setTimeSlice in interface ViewImageUpdateInterface
        Parameters:
        tSlice - DOCUMENT ME!
      • updateImages

        public boolean updateImages​(boolean flag)
        ViewImageUpdateInterface, unused here.
        Specified by:
        updateImages in interface ViewImageUpdateInterface
        Parameters:
        flag - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • updateImages

        public boolean updateImages​(ModelLUT LUTa,
                                    ModelLUT LUTb,
                                    boolean flag,
                                    int interpMode)
        updateImages, called when the ModelLUT changes. Updates the ImageComponent3D object for Texture3D updates. The ImageComponent3D object is only updated if it is currently displayed.
        Specified by:
        updateImages in interface ViewImageUpdateInterface
        Parameters:
        LUTa - the LUT associated with the independent texture
        LUTb - the LUT associated with the ModelImage
        flag - forces update (ignored here)
        interpMode - (ignored here)
        Returns:
        DOCUMENT ME!
      • updateSurfaceTextureImage

        public void updateSurfaceTextureImage​(java.util.BitSet paintMask,
                                              javax.vecmath.Color4f kColor)
        updateSurfaceTextureImage. Paints the ImageComponent3D object with the paint mask.
        Parameters:
        paintMask - paint bit map to add to the texture.
        kColor - DOCUMENT ME!
      • createVolumeTexture

        private void createVolumeTexture()
        Creates a 3D Texture object for the ModelImage displayed in the SurfaceRender object. The Texture3D object is used for texture-mapping on any or all ModelTriangleMesh objects displayed in the SurfaceRender.
      • generateVolumeTexture

        private javax.media.j3d.ImageComponent3D generateVolumeTexture()
        generates an ImageComponent3D containing the ModelImage data. Uses the PatientSlice object to output the data into the ImageComponent3D, so lut changes can be applied. The ImageComponent3D is used to create a Texture3D object for texture-mapping the ModelImage data onto ModelTriangleMesh objects.
        Returns:
        DOCUMENT ME!
      • init

        private void init()
        Initializes the interface, and generates the first default texture.
      • initLUT

        private void initLUT()
        Initializes or re-initializes the Histogram LUT interface based on the currently-loaded ModelImage.
      • loadingImage

        private void loadingImage()
        Load a new ModelImage to use for the 3D Texture display:
      • updateTexture

        private void updateTexture()
        Updaes the ImageComponent3D data if the texture display is turned on. Notifies the JPanelSurface object of the update.