Class SingleImagePanel

  • All Implemented Interfaces:
    java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener

    public class SingleImagePanel
    extends javax.swing.JComponent
    implements java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener

    Implements a component that can display a single or multi-frame image in a single panel with window center/width adjustment, scrolling through frames of a multi-frame image, resizing to the size of the panel, annotation of pre-defined text and shapes, feedback of cursor position status (2D and 3D position, pixel value, window).

    Includes a main() method for testing that will display a single image from a file in a JFrame.

    About the most minimal code to display a single DICOM image looks like this:

     JFrame p = new JFrame();
     p.add(new SingleImagePanel(new SourceImage(filename)));
     p.setBackground(Color.BLACK);
     p.setSize(512,512);
     p.setVisible(true);
     
    See Also:
    SourceImage, Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  SingleImagePanel.LeftMouseMode  
      • 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 Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static java.awt.image.BufferedImage applyVOILUT​(java.awt.image.BufferedImage src, double center, double width, double identityCenter, double identityWidth, boolean signed, boolean inverted, double useSlope, double useIntercept, boolean hasPad, int pad, int padRangeLimit, int numberOfEntries, int firstValueMapped, int bitsPerEntry, short[] grayTable, int entryMin, int entryMax, int topOfEntryRange)  
      static java.awt.image.BufferedImage applyWindowCenterAndWidthLinear​(java.awt.image.BufferedImage src, double center, double width, boolean signed, boolean inverted, double useSlope, double useIntercept, boolean hasPad, int pad, int padRangeLimit)  
      static java.awt.image.BufferedImage applyWindowCenterAndWidthLinear​(java.awt.image.BufferedImage src, double center, double width, boolean signed, boolean inverted, double useSlope, double useIntercept, boolean hasPad, int pad, int padRangeLimit, boolean useExactCalculationInsteadOfDICOMStandardMethod)  
      static java.awt.image.BufferedImage applyWindowCenterAndWidthLinearToColorImage​(java.awt.image.BufferedImage src, double center, double width)  
      static java.awt.image.BufferedImage applyWindowCenterAndWidthLogistic​(java.awt.image.BufferedImage src, double center, double width, boolean signed, boolean inverted, double useSlope, double useIntercept, boolean hasPad, int pad, int padRangeLimit)  
      static java.awt.image.BufferedImage applyWindowCenterAndWidthWithPaletteColor​(java.awt.image.BufferedImage src, double center, double width, boolean signed, boolean inverted, double useSlope, double useIntercept, boolean hasPad, int pad, int padRangeLimit, int largestGray, int bitsPerEntry, int numberOfEntries, short[] redTable, short[] greenTable, short[] blueTable)  
      void deconstruct()  
      static void deconstructAllSingleImagePanelsInContainer​(java.awt.Container container)  
      void dirty()  
      void dirty​(SourceImage sImg)  
      void dirtyPanned()  
      void dirtySource()  
      void dirtySource​(SourceImage sImg)  
      void dirtyWindowing()  
      void displayReset()  
      void displaySelectedMagnificationRatio​(double ratio)  
      protected void establishInitialWindowOrVOILUT()  
      protected void establishStatisticalWindow()  
      protected void finalize()  
      protected java.awt.geom.Point2D getImageCoordinateFromWindowCoordinate​(double xw, double yw)
      Get location on source image from window relative location.
      GeometryOfVolume getImageGeometry()
      Get the geometry of the frames currently loaded in the single image panel.
      java.util.Vector getPersistentDrawingShapes()
      Get the unselected region shapes to to be displayed on the currently selected and displayed frame.
      java.util.Vector getSelectedDrawingShapes()
      Get the selected region shapes to to be displayed on the currently selected and displayed frame.
      protected int getSourceImageHeight()  
      protected int getSourceImageWidth()  
      java.util.Vector<SuperimposedImage> getSuperimposedImages()
      Get the superimposed images to to be displayed on the appropriate frames.
      void keyPressed​(java.awt.event.KeyEvent e)  
      void keyReleased​(java.awt.event.KeyEvent e)  
      void keyTyped​(java.awt.event.KeyEvent e)  
      static void main​(java.lang.String[] arg)  
      void mouseClicked​(java.awt.event.MouseEvent e)  
      void mouseDragged​(java.awt.event.MouseEvent e)  
      void mouseEntered​(java.awt.event.MouseEvent e)  
      void mouseExited​(java.awt.event.MouseEvent e)  
      void mouseMoved​(java.awt.event.MouseEvent e)  
      void mousePressed​(java.awt.event.MouseEvent e)  
      void mouseReleased​(java.awt.event.MouseEvent e)  
      void mouseWheelMoved​(java.awt.event.MouseWheelEvent e)  
      void paintComponent​(java.awt.Graphics g)  
      void setApplyShutter​(boolean applyShutter)
      Set whether or not to apply shutter.
      void setDemographicAndTechniqueAnnotations​(DemographicAndTechniqueAnnotations demographicAndTechniqueAnnotations, java.lang.String demographicAndTechniqueFontName, int demographicAndTechniqueFontStyle, int demographicAndTechniqueFontSize, java.awt.Color demographicAndTechniqueColor)
      Set annotative attribute values to be displayed on the currently selected and displayed frame at defined positions.
      void setDisplayedAreaSelection​(DisplayedAreaSelection displayedAreaSelection)
      Select the sub-region of the image to display.
      void setLocalizerShapes​(java.util.Vector shapes)
      Set the shapes of any localizer postings to be displayed on the currently selected and displayed frame.
      void setOrientationAnnotations​(com.pixelmed.display.OrientationAnnotations orientationAnnotations, java.lang.String orientationFontName, int orientationFontStyle, int orientationFontSize, java.awt.Color orientationColor)
      Set orientation values to be displayed on the currently selected and displayed frame.
      void setOrientationAnnotations​(com.pixelmed.display.OrientationAnnotations orientationAnnotations, java.lang.String orientationFontName, int orientationFontStyle, int orientationFontSize, java.awt.Color orientationColor, boolean leftSide)
      Set orientation values to be displayed on the currently selected and displayed frame.
      void setPerFrameDrawingShapes​(java.util.Vector<java.awt.Shape>[] arrayOfShapes)
      Set the array of per-frame shapes to be displayed on the respective frame when it is selected and displayed.
      void setPersistentDrawingShapes​(java.util.Vector shapes)
      Set the unselected region shapes to to be displayed on the currently selected and displayed frame.
      void setPixelSpacingInSourceImage​(double pixelSpacingInSourceImage)
      Set pixel spacing in source image.
      void setPixelSpacingInSourceImage​(double pixelSpacingInSourceImage, java.lang.String typeOfPixelSpacing)
      Set pixel spacing in source image.
      void setPreDefinedShapes​(java.util.Vector shapes)
      Set the predefined shapes to to be displayed on the currently selected and displayed frame.
      void setPreTransformImageRelativeCoordinates​(java.awt.geom.AffineTransform transform)
      Select the AffineTransform to apply to image-relative coordinates.
      void setSelectedDrawingShapes​(java.util.Vector shapes)
      Set the selected region shapes to to be displayed on the currently selected and displayed frame.
      void setShowOverlays​(boolean showOverlays)
      Set whether or not to show graphics such as overlays.
      void setShowSuperimposedImages​(boolean showSuperimposedImages)
      Set whether or not to show superimposed images.
      void setShowZoomFactor​(boolean showZoomFactor, boolean leftSide, double pixelSpacingInSourceImage)
      Select whether or not to annotate displayed image with zoom factor.
      void setShowZoomFactor​(boolean showZoomFactor, boolean leftSide, double pixelSpacingInSourceImage, java.lang.String typeOfPixelSpacing)
      Select whether or not to annotate displayed image with zoom factor.
      void setSideAndViewAnnotationString​(java.lang.String annotationString, int verticalOffset, java.lang.String annotationFontName, int annotationFontStyle, int annotationFontSize, java.awt.Color annotationColor, boolean leftSide)
      Set side and view annotation string.
      void setSuperimposedImages​(java.util.Vector<SuperimposedImage> superimposedImages)
      Set the superimposed images to to be displayed on the appropriate frames.
      void setVOIFunctionToLinear()
      Set the VOI function to the (default) window center/width linear transformation.
      void setVOIFunctionToLogistic()
      Set the VOI function to a non-linear transformation using a logistic (sigmoid) curve with window center and width as parameters.
      void setVolumeLocalizationShapes​(java.util.Vector shapes)
      Set the shapes of any volume localization postings to be displayed on the currently selected and displayed frame.
      void setWindowingAccelerationValue​(double value)
      Set the windowing acceleration value to use.
      void setWindowLinearCalculationToDicom()
      Set the VOI linear function to use the DICOM offset window center/width linear transformation when applying to rescaled pixels.
      void setWindowLinearCalculationToExact()
      Set the VOI linear function to use the exact window center/width linear transformation when applying to rescaled pixels.
      void updateStatusBarValues​(int x, int y)  
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, 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, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, list, list, paintComponents, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, 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, hasFocus, imageUpdate, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, list, list, list, paintAll, 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, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • useVOILUTNotFunction

        protected boolean useVOILUTNotFunction
        whether or not to use the supplied VOI LUT, rather than a linear or sigmoid window function
      • windowCenter

        protected double windowCenter
        the currently selected, default or user modified window center
      • windowWidth

        protected double windowWidth
        the currently selected, default or user modified window width
      • voiLUTIdentityWindowWidth

        protected double voiLUTIdentityWindowWidth
        the currently selected VOI LUT window width value that will result in the application of the VOI LUT rescaling the input (index) values
      • voiLUTIdentityWindowCenter

        protected double voiLUTIdentityWindowCenter
        the currently selected VOI LUT window center value that will result in the application of the VOI LUT rescaling the input (index) values
      • voiLUTNumberOfEntries

        protected int voiLUTNumberOfEntries
        the currently selected VOI LUT number of entries
      • voiLUTFirstValueMapped

        protected int voiLUTFirstValueMapped
        the currently selected VOI LUT first value mapped
      • voiLUTBitsPerEntry

        protected int voiLUTBitsPerEntry
        the currently selected VOI LUT bits per entry
      • voiLUTData

        protected short[] voiLUTData
        the currently selected VOI LUT Data
      • voiLUTEntryMin

        protected int voiLUTEntryMin
        the currently selected VOI LUT minimum entry value
      • voiLUTEntryMax

        protected int voiLUTEntryMax
        the currently selected VOI LUT maximum entry value
      • voiLUTTopOfEntryRange

        protected int voiLUTTopOfEntryRange
        the currently selected VOI LUT top of entry range (which may be less than (2^voiLUTNumberOfEntries)-1, e.g., in buggy Agfa images)
      • preDefinedShapes

        protected java.util.Vector<java.awt.Shape> preDefinedShapes
      • preDefinedText

        protected java.util.Vector<java.awt.Shape> preDefinedText
      • localizerShapes

        protected java.util.Vector<java.awt.Shape> localizerShapes
      • volumeLocalizationShapes

        protected java.util.Vector<java.awt.Shape> volumeLocalizationShapes
      • interactiveDrawingShapes

        protected java.util.Vector<java.awt.Shape> interactiveDrawingShapes
      • persistentDrawingShapes

        protected java.util.Vector<java.awt.Shape> persistentDrawingShapes
      • selectedDrawingShapes

        protected java.util.Vector<java.awt.Shape> selectedDrawingShapes
      • persistentDrawingText

        protected java.util.Vector<com.pixelmed.display.TextAnnotation> persistentDrawingText
      • perFrameDrawingShapes

        protected java.util.Vector<java.awt.Shape>[] perFrameDrawingShapes
      • superimposedImages

        protected java.util.Vector<SuperimposedImage> superimposedImages
      • orientationAnnotations

        protected com.pixelmed.display.OrientationAnnotations orientationAnnotations
      • orientationColor

        protected java.awt.Color orientationColor
      • orientationFont

        protected java.awt.Font orientationFont
      • showOrientationsLeftSide

        protected boolean showOrientationsLeftSide
      • sideAndViewAnnotationString

        protected java.lang.String sideAndViewAnnotationString
      • sideAndViewAnnotationVerticalOffset

        protected int sideAndViewAnnotationVerticalOffset
      • sideAndViewAnnotationColor

        protected java.awt.Color sideAndViewAnnotationColor
      • sideAndViewAnnotationFont

        protected java.awt.Font sideAndViewAnnotationFont
      • showSideAndViewAnnotationLeftSide

        protected boolean showSideAndViewAnnotationLeftSide
      • showZoomFactor

        protected boolean showZoomFactor
      • showZoomFactorLeftSide

        protected boolean showZoomFactorLeftSide
      • pixelSpacingInSourceImage

        protected double pixelSpacingInSourceImage
      • typeOfPixelSpacing

        protected java.lang.String typeOfPixelSpacing
      • currentLocationIn3DSpace

        protected double[] currentLocationIn3DSpace
        This value is outside mouseMoved() only so that it doesn't need to be constantly reallocated - it is not used by any other method
    • Constructor Detail

      • SingleImagePanel

        public SingleImagePanel​(SourceImage sImg,
                                EventContext typeOfPanelEventContext,
                                int[] sortOrder,
                                java.util.Vector preDefinedShapes,
                                java.util.Vector preDefinedText,
                                GeometryOfVolume imageGeometry)
        Parameters:
        sImg -
        typeOfPanelEventContext -
        sortOrder -
        preDefinedShapes -
        preDefinedText -
        imageGeometry -
      • SingleImagePanel

        public SingleImagePanel​(SourceImage sImg,
                                EventContext typeOfPanelEventContext,
                                GeometryOfVolume imageGeometry)
        Parameters:
        sImg -
        typeOfPanelEventContext -
        imageGeometry -
      • SingleImagePanel

        public SingleImagePanel​(SourceImage sImg,
                                EventContext typeOfPanelEventContext)
        Parameters:
        sImg -
        typeOfPanelEventContext -
      • SingleImagePanel

        public SingleImagePanel​(SourceImage sImg)
        Parameters:
        sImg -
    • Method Detail

      • dirty

        public void dirty()
      • dirtySource

        public void dirtySource()
      • dirtySource

        public void dirtySource​(SourceImage sImg)
      • dirtyWindowing

        public void dirtyWindowing()
      • dirtyPanned

        public void dirtyPanned()
      • getImageGeometry

        public GeometryOfVolume getImageGeometry()

        Get the geometry of the frames currently loaded in the single image panel.

        Returns:
        the geometry of the frames
      • setPreDefinedShapes

        public final void setPreDefinedShapes​(java.util.Vector shapes)

        Set the predefined shapes to to be displayed on the currently selected and displayed frame.

        Parameters:
        shapes - a java.util.Vector of java.awt.Shape, may be null or empty
      • setLocalizerShapes

        public final void setLocalizerShapes​(java.util.Vector shapes)

        Set the shapes of any localizer postings to be displayed on the currently selected and displayed frame.

        Parameters:
        shapes - a java.util.Vector of java.awt.Shape, may be null or empty
      • setVolumeLocalizationShapes

        public final void setVolumeLocalizationShapes​(java.util.Vector shapes)

        Set the shapes of any volume localization postings to be displayed on the currently selected and displayed frame.

        Parameters:
        shapes - a java.util.Vector of java.awt.Shape, may be null or empty
      • setPersistentDrawingShapes

        public final void setPersistentDrawingShapes​(java.util.Vector shapes)

        Set the unselected region shapes to to be displayed on the currently selected and displayed frame.

        Parameters:
        shapes - a java.util.Vector of java.awt.Shape, may be null or empty
      • getPersistentDrawingShapes

        public final java.util.Vector getPersistentDrawingShapes()

        Get the unselected region shapes to to be displayed on the currently selected and displayed frame.

        Returns:
        a java.util.Vector of java.awt.Shape, may be null or empty
      • setSelectedDrawingShapes

        public final void setSelectedDrawingShapes​(java.util.Vector shapes)

        Set the selected region shapes to to be displayed on the currently selected and displayed frame.

        Parameters:
        shapes - a java.util.Vector of java.awt.Shape, may be null or empty
      • getSelectedDrawingShapes

        public final java.util.Vector getSelectedDrawingShapes()

        Get the selected region shapes to to be displayed on the currently selected and displayed frame.

        Returns:
        a java.util.Vector of java.awt.Shape, may be null or empty
      • setPerFrameDrawingShapes

        public final void setPerFrameDrawingShapes​(java.util.Vector<java.awt.Shape>[] arrayOfShapes)

        Set the array of per-frame shapes to be displayed on the respective frame when it is selected and displayed.

        Parameters:
        arrayOfShapes - an array of java.util.Vector of java.awt.Shape
      • setSuperimposedImages

        public final void setSuperimposedImages​(java.util.Vector<SuperimposedImage> superimposedImages)

        Set the superimposed images to to be displayed on the appropriate frames.

        Parameters:
        superimposedImages - a java.util.Vector of com.pixelmed.display.SuperimposedImage, may be null or empty
      • setDemographicAndTechniqueAnnotations

        public final void setDemographicAndTechniqueAnnotations​(DemographicAndTechniqueAnnotations demographicAndTechniqueAnnotations,
                                                                java.lang.String demographicAndTechniqueFontName,
                                                                int demographicAndTechniqueFontStyle,
                                                                int demographicAndTechniqueFontSize,
                                                                java.awt.Color demographicAndTechniqueColor)

        Set annotative attribute values to be displayed on the currently selected and displayed frame at defined positions.

        Parameters:
        demographicAndTechniqueAnnotations - the set of annotations, indexed per frame
        demographicAndTechniqueFontName - the name of the font, e.g. "SansSerif"
        demographicAndTechniqueFontStyle - the style of the font, e.g. Font.PLAIN
        demographicAndTechniqueFontSize - the size of the font in points, e.g. 10
        demographicAndTechniqueColor - the color to draw, e.g. Color.pink
      • setOrientationAnnotations

        public final void setOrientationAnnotations​(com.pixelmed.display.OrientationAnnotations orientationAnnotations,
                                                    java.lang.String orientationFontName,
                                                    int orientationFontStyle,
                                                    int orientationFontSize,
                                                    java.awt.Color orientationColor)

        Set orientation values to be displayed on the currently selected and displayed frame.

        Parameters:
        orientationAnnotations - the set of orientations, indexed per frame
        orientationFontName - the name of the font, e.g. "SansSerif"
        orientationFontStyle - the style of the font, e.g. Font.PLAIN
        orientationFontSize - the size of the font in points, e.g. 20
        orientationColor - the color to draw, e.g. Color.pink
      • setOrientationAnnotations

        public final void setOrientationAnnotations​(com.pixelmed.display.OrientationAnnotations orientationAnnotations,
                                                    java.lang.String orientationFontName,
                                                    int orientationFontStyle,
                                                    int orientationFontSize,
                                                    java.awt.Color orientationColor,
                                                    boolean leftSide)

        Set orientation values to be displayed on the currently selected and displayed frame.

        Parameters:
        orientationAnnotations - the set of orientations, indexed per frame
        orientationFontName - the name of the font, e.g. "SansSerif"
        orientationFontStyle - the style of the font, e.g. Font.PLAIN
        orientationFontSize - the size of the font in points, e.g. 20
        orientationColor - the color to draw, e.g. Color.pink
        leftSide - show row orientation on left (true) or right (false) side of view port
      • setSideAndViewAnnotationString

        public final void setSideAndViewAnnotationString​(java.lang.String annotationString,
                                                         int verticalOffset,
                                                         java.lang.String annotationFontName,
                                                         int annotationFontStyle,
                                                         int annotationFontSize,
                                                         java.awt.Color annotationColor,
                                                         boolean leftSide)

        Set side and view annotation string.

        Parameters:
        annotationString - additional side (image laterality) and view (e.g., mammo CC) string to show on same side
        verticalOffset -
        annotationFontName - the name of the font, e.g. "SansSerif"
        annotationFontStyle - the style of the font, e.g. Font.PLAIN
        annotationFontSize - the size of the font in points, e.g. 20
        annotationColor - the color to draw, e.g. Color.pink
        leftSide - show row orientation on left (true) or right (false) side of view port
      • setDisplayedAreaSelection

        public final void setDisplayedAreaSelection​(DisplayedAreaSelection displayedAreaSelection)

        Select the sub-region of the image to display.

        Parameters:
        displayedAreaSelection - the selection, or null to reset to using the entire image
      • displayReset

        public void displayReset()
      • displaySelectedMagnificationRatio

        public void displaySelectedMagnificationRatio​(double ratio)
      • setPreTransformImageRelativeCoordinates

        public final void setPreTransformImageRelativeCoordinates​(java.awt.geom.AffineTransform transform)

        Select the AffineTransform to apply to image-relative coordinates.

        Used in cases where the supplied image has already been flipped or rotated but the coordinates relative to the original image have not.

        Parameters:
        transform - the transform, or null to reset to no transform
      • setShowZoomFactor

        public final void setShowZoomFactor​(boolean showZoomFactor,
                                            boolean leftSide,
                                            double pixelSpacingInSourceImage)

        Select whether or not to annotate displayed image with zoom factor.

        Uses same font parameters as set for orientation annotations.

        Also implicitly effects setPixelSpacingInSourceImage().

        Parameters:
        showZoomFactor - true or false to activate annotation of zoom factor
        leftSide - show zoom factor on left (true) or right (false) side of view port
        pixelSpacingInSourceImage - a single value that is the (square) row and column pixel spacing, or 0 if not known
      • setShowZoomFactor

        public final void setShowZoomFactor​(boolean showZoomFactor,
                                            boolean leftSide,
                                            double pixelSpacingInSourceImage,
                                            java.lang.String typeOfPixelSpacing)

        Select whether or not to annotate displayed image with zoom factor.

        Uses same font parameters as set for orientation annotations.

        Also implicitly effects setPixelSpacingInSourceImage().

        Parameters:
        showZoomFactor - true or false to activate annotation of zoom factor
        leftSide - show zoom factor on left (true) or right (false) side of view port
        pixelSpacingInSourceImage - a single value that is the (square) row and column pixel spacing, or 0 if not known
        typeOfPixelSpacing - a String that describes the type of pixel spacing (e.g., detector plane, calibrated, accounting for geometric magnification, etc.), or null if not to be described when making measurements
      • setPixelSpacingInSourceImage

        public final void setPixelSpacingInSourceImage​(double pixelSpacingInSourceImage)

        Set pixel spacing in source image.

        Used for displaying zoom factor and making measurements, therefore should be appropriate choice of Pixel Spacing or Imager Pixel Spacing (appropriately corrected for radiographic magnification factor, if any), etc.

        Parameters:
        pixelSpacingInSourceImage - a single value that is the (square) row and column pixel spacing, or 0 if not known
      • setPixelSpacingInSourceImage

        public final void setPixelSpacingInSourceImage​(double pixelSpacingInSourceImage,
                                                       java.lang.String typeOfPixelSpacing)

        Set pixel spacing in source image.

        Used for displaying zoom factor and making measurements, therefore should be appropriate choice of Pixel Spacing or Imager Pixel Spacing (appropriately corrected for radiographic magnification factor, if any), etc.

        Parameters:
        pixelSpacingInSourceImage - a single value that is the (square) row and column pixel spacing, or 0 if not known
        typeOfPixelSpacing - a String that describes the type of pixel spacing (e.g., detector plane, calibrated, accounting for geometric magnification, etc.), or null if not to be described when making measurements
      • setVOIFunctionToLinear

        public final void setVOIFunctionToLinear()

        Set the VOI function to the (default) window center/width linear transformation.

      • setVOIFunctionToLogistic

        public final void setVOIFunctionToLogistic()

        Set the VOI function to a non-linear transformation using a logistic (sigmoid) curve with window center and width as parameters.

      • setWindowLinearCalculationToExact

        public final void setWindowLinearCalculationToExact()

        Set the VOI linear function to use the exact window center/width linear transformation when applying to rescaled pixels.

      • setWindowLinearCalculationToDicom

        public final void setWindowLinearCalculationToDicom()

        Set the VOI linear function to use the DICOM offset window center/width linear transformation when applying to rescaled pixels.

        The DICOM offset subtracts 0.5 from the window center and subtracts 1.0 from the window width before applying to rescaled pixels.

      • setWindowingAccelerationValue

        public final void setWindowingAccelerationValue​(double value)

        Set the windowing acceleration value to use.

      • setShowOverlays

        public final void setShowOverlays​(boolean showOverlays)

        Set whether or not to show graphics such as overlays.

      • setApplyShutter

        public final void setApplyShutter​(boolean applyShutter)

        Set whether or not to apply shutter.

      • setShowSuperimposedImages

        public final void setShowSuperimposedImages​(boolean showSuperimposedImages)

        Set whether or not to show superimposed images.

      • keyPressed

        public void keyPressed​(java.awt.event.KeyEvent e)
        Specified by:
        keyPressed in interface java.awt.event.KeyListener
        Parameters:
        e -
      • keyReleased

        public void keyReleased​(java.awt.event.KeyEvent e)
        Specified by:
        keyReleased in interface java.awt.event.KeyListener
        Parameters:
        e -
      • keyTyped

        public void keyTyped​(java.awt.event.KeyEvent e)
        Specified by:
        keyTyped in interface java.awt.event.KeyListener
        Parameters:
        e -
      • mouseWheelMoved

        public void mouseWheelMoved​(java.awt.event.MouseWheelEvent e)
        Specified by:
        mouseWheelMoved in interface java.awt.event.MouseWheelListener
        Parameters:
        e -
      • mouseClicked

        public void mouseClicked​(java.awt.event.MouseEvent e)
        Specified by:
        mouseClicked in interface java.awt.event.MouseListener
        Parameters:
        e -
      • mouseEntered

        public void mouseEntered​(java.awt.event.MouseEvent e)
        Specified by:
        mouseEntered in interface java.awt.event.MouseListener
        Parameters:
        e -
      • mouseExited

        public void mouseExited​(java.awt.event.MouseEvent e)
        Specified by:
        mouseExited in interface java.awt.event.MouseListener
        Parameters:
        e -
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent e)
        Specified by:
        mouseDragged in interface java.awt.event.MouseMotionListener
        Parameters:
        e -
      • getSourceImageHeight

        protected int getSourceImageHeight()
      • getSourceImageWidth

        protected int getSourceImageWidth()
      • getImageCoordinateFromWindowCoordinate

        protected java.awt.geom.Point2D getImageCoordinateFromWindowCoordinate​(double xw,
                                                                               double yw)
        Get location on source image from window relative location.
        Parameters:
        xw - x coordinate in AWT window as returned by MouseEvent.getX()
        yw - y coordinate in AWT window as returned by MouseEvent.getY()
        Returns:
        source image-relative coordinates with sub-pixel resolution clamped to image size but including BLHC of BLHC pixel (per DICOM PS 3.3 Figure C.10.5-1)
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent e)
        Specified by:
        mouseMoved in interface java.awt.event.MouseMotionListener
        Parameters:
        e -
      • updateStatusBarValues

        public void updateStatusBarValues​(int x,
                                          int y)
        Parameters:
        x -
        y -
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent e)
        Specified by:
        mousePressed in interface java.awt.event.MouseListener
        Parameters:
        e -
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent e)
        Specified by:
        mouseReleased in interface java.awt.event.MouseListener
        Parameters:
        e -
      • applyVOILUT

        public static final java.awt.image.BufferedImage applyVOILUT​(java.awt.image.BufferedImage src,
                                                                     double center,
                                                                     double width,
                                                                     double identityCenter,
                                                                     double identityWidth,
                                                                     boolean signed,
                                                                     boolean inverted,
                                                                     double useSlope,
                                                                     double useIntercept,
                                                                     boolean hasPad,
                                                                     int pad,
                                                                     int padRangeLimit,
                                                                     int numberOfEntries,
                                                                     int firstValueMapped,
                                                                     int bitsPerEntry,
                                                                     short[] grayTable,
                                                                     int entryMin,
                                                                     int entryMax,
                                                                     int topOfEntryRange)
        Parameters:
        src -
        center -
        width -
        identityCenter -
        identityWidth -
        signed -
        inverted -
        useSlope -
        useIntercept -
        hasPad -
        pad -
        padRangeLimit -
        numberOfEntries -
        bitsPerEntry -
        grayTable -
        entryMin -
        entryMax -
        topOfEntryRange -
      • applyWindowCenterAndWidthLogistic

        public static final java.awt.image.BufferedImage applyWindowCenterAndWidthLogistic​(java.awt.image.BufferedImage src,
                                                                                           double center,
                                                                                           double width,
                                                                                           boolean signed,
                                                                                           boolean inverted,
                                                                                           double useSlope,
                                                                                           double useIntercept,
                                                                                           boolean hasPad,
                                                                                           int pad,
                                                                                           int padRangeLimit)
        Parameters:
        src -
        center -
        width -
        signed -
        inverted -
        useSlope -
        useIntercept -
        hasPad -
        pad -
        padRangeLimit -
      • applyWindowCenterAndWidthLinear

        public static final java.awt.image.BufferedImage applyWindowCenterAndWidthLinear​(java.awt.image.BufferedImage src,
                                                                                         double center,
                                                                                         double width,
                                                                                         boolean signed,
                                                                                         boolean inverted,
                                                                                         double useSlope,
                                                                                         double useIntercept,
                                                                                         boolean hasPad,
                                                                                         int pad,
                                                                                         int padRangeLimit)
        Parameters:
        src -
        center -
        width -
        signed -
        inverted -
        useSlope -
        useIntercept -
        hasPad -
        pad -
        padRangeLimit -
      • applyWindowCenterAndWidthLinear

        public static final java.awt.image.BufferedImage applyWindowCenterAndWidthLinear​(java.awt.image.BufferedImage src,
                                                                                         double center,
                                                                                         double width,
                                                                                         boolean signed,
                                                                                         boolean inverted,
                                                                                         double useSlope,
                                                                                         double useIntercept,
                                                                                         boolean hasPad,
                                                                                         int pad,
                                                                                         int padRangeLimit,
                                                                                         boolean useExactCalculationInsteadOfDICOMStandardMethod)
        Parameters:
        src -
        center -
        width -
        signed -
        inverted -
        useSlope -
        useIntercept -
        hasPad -
        pad -
        padRangeLimit -
        useExactCalculationInsteadOfDICOMStandardMethod -
      • applyWindowCenterAndWidthWithPaletteColor

        public static final java.awt.image.BufferedImage applyWindowCenterAndWidthWithPaletteColor​(java.awt.image.BufferedImage src,
                                                                                                   double center,
                                                                                                   double width,
                                                                                                   boolean signed,
                                                                                                   boolean inverted,
                                                                                                   double useSlope,
                                                                                                   double useIntercept,
                                                                                                   boolean hasPad,
                                                                                                   int pad,
                                                                                                   int padRangeLimit,
                                                                                                   int largestGray,
                                                                                                   int bitsPerEntry,
                                                                                                   int numberOfEntries,
                                                                                                   short[] redTable,
                                                                                                   short[] greenTable,
                                                                                                   short[] blueTable)
        Parameters:
        src -
        center -
        width -
        signed -
        inverted -
        useSlope -
        useIntercept -
        hasPad -
        pad -
        padRangeLimit -
        largestGray -
        bitsPerEntry -
        numberOfEntries -
        redTable -
        greenTable -
        blueTable -
      • applyWindowCenterAndWidthLinearToColorImage

        public static final java.awt.image.BufferedImage applyWindowCenterAndWidthLinearToColorImage​(java.awt.image.BufferedImage src,
                                                                                                     double center,
                                                                                                     double width)
        Parameters:
        src -
        center -
        width -
      • establishStatisticalWindow

        protected void establishStatisticalWindow()
      • establishInitialWindowOrVOILUT

        protected void establishInitialWindowOrVOILUT()
      • deconstruct

        public void deconstruct()
      • deconstructAllSingleImagePanelsInContainer

        public static void deconstructAllSingleImagePanelsInContainer​(java.awt.Container container)
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • paintComponent

        public void paintComponent​(java.awt.Graphics g)
        Overrides:
        paintComponent in class javax.swing.JComponent
        Parameters:
        g -
      • main

        public static void main​(java.lang.String[] arg)
        Parameters:
        arg -