Class IntensityGraphFigure

  • All Implemented Interfaces:
    org.eclipse.draw2d.IFigure, Introspectable

    public class IntensityGraphFigure
    extends org.eclipse.draw2d.Figure
    implements Introspectable
    An intensity graph figure.
    • Field Detail

      • dataWidth

        private int dataWidth
      • dataHeight

        private int dataHeight
      • cropLeft

        private int cropLeft
      • cropRight

        private int cropRight
      • cropTop

        private int cropTop
      • cropBottom

        private int cropBottom
      • unsignedBits

        private int unsignedBits
      • croppedDataWidth

        private int croppedDataWidth
      • croppedDataHeight

        private int croppedDataHeight
      • max

        private double max
      • min

        private double min
      • xAxis

        private final Axis xAxis
      • yAxis

        private final Axis yAxis
      • xAxisRange

        private Range xAxisRange
      • yAxisRange

        private Range yAxisRange
      • originalCrop

        private org.eclipse.draw2d.geometry.Rectangle originalCrop
      • start

        private org.eclipse.draw2d.geometry.Point start
      • end

        private org.eclipse.draw2d.geometry.Point end
      • armed

        private boolean armed
      • dataDirty

        private boolean dataDirty
      • bufferedImageData

        private org.eclipse.swt.graphics.ImageData bufferedImageData
      • bufferedImage

        private org.eclipse.swt.graphics.Image bufferedImage
      • runMode

        private boolean runMode
      • roiMap

        private java.util.Map<java.lang.String,​ROIFigure> roiMap
      • WHITE_COLOR

        private final org.eclipse.swt.graphics.Color WHITE_COLOR
      • BLACK_COLOR

        private final org.eclipse.swt.graphics.Color BLACK_COLOR
      • TRANSPARENT_COLOR

        private final org.eclipse.swt.graphics.Color TRANSPARENT_COLOR
      • inRGBMode

        private boolean inRGBMode
      • palette

        private org.eclipse.swt.graphics.PaletteData palette
      • savedShowRamp

        private java.lang.Boolean savedShowRamp
      • isSingleLineProfiling

        private boolean isSingleLineProfiling
      • roiColor

        private org.eclipse.swt.graphics.Color roiColor
    • Constructor Detail

      • IntensityGraphFigure

        public IntensityGraphFigure()
      • IntensityGraphFigure

        public IntensityGraphFigure​(boolean runMode)
    • Method Detail

      • addROI

        public void addROI​(java.lang.String name,
                           IntensityGraphFigure.IROIListener roiListener,
                           IntensityGraphFigure.IROIInfoProvider roiInfoProvider)
        Add a new ROI to the graph.
        Parameters:
        name - name of the ROI. It must be unique for this graph.
        color - color of the ROI.
        roiListener - listener on ROI updates. Can be null.
        roiInfoProvider - provides information for the ROI. Can be null.
      • removeROI

        public void removeROI​(java.lang.String name)
      • setROIVisible

        public void setROIVisible​(java.lang.String name,
                                  boolean visible)
      • calculateXProfileData

        private double[] calculateXProfileData​(IPrimaryArrayWrapper data,
                                               int dw,
                                               int dh)
      • calculateYProfileData

        private double[] calculateYProfileData​(IPrimaryArrayWrapper data,
                                               int dw,
                                               int dh)
      • dispose

        public void dispose()
      • drawRGBImage

        private org.eclipse.swt.graphics.ImageData drawRGBImage​(IPrimaryArrayWrapper dataArray,
                                                                int dataWidth,
                                                                int dataHeight,
                                                                double max,
                                                                double min,
                                                                org.eclipse.swt.graphics.ImageData imageData,
                                                                boolean shrink)
        Calculate the image data from source RGB data array [RGBRGBRGB...].
        Parameters:
        dataArray - the source data in RGB mode.
        dataWidth - number of columns of dataArray; This will be the width of image data.
        dataHeight - number of rows of dataArray; This will be the height of image data.
        max - the upper limit of the data in dataArray
        min - the lower limit of the data in dataArray
        imageData - the imageData to be filled. null if a new instance should be created.
        shrink - true if area size of image data is smaller than dataWidth*dataHeight. If this is true, it will use the nearest neighbor iamge scaling algorithm as described at http://tech-algorithm.com/articles/nearest-neighbor-image-scaling/.
        Returns:
        the image data. null if dataWidth or dataHeight is less than 1 or larger than the data array.
      • calcRGBPixel

        protected int calcRGBPixel​(IPrimaryArrayWrapper dataArray,
                                   double max,
                                   double min,
                                   int index)
        Parameters:
        dataArray -
        max -
        min -
        index -
        Returns:
      • fireProfileDataChanged

        private void fireProfileDataChanged​(IPrimaryArrayWrapper data,
                                            int dw,
                                            int dh)
      • getColorMap

        public ColorMap getColorMap()
        Returns:
        the colorMap
      • getCropBottom

        public int getCropBottom()
        Returns:
        the cropBottom
      • getCropLeft

        public int getCropLeft()
        Returns:
        the cropLeft
      • getCropRight

        public int getCropRight()
        Returns:
        the cropRigth
      • getCropTop

        public int getCropTop()
        Returns:
        the cropTop
      • getDataArray

        public double[] getDataArray()
      • getDataHeight

        public int getDataHeight()
        Returns:
        the dataHeight
      • getDataWidth

        public int getDataWidth()
        Returns:
        the dataWidth
      • getUnsignedBits

        public int getUnsignedBits()
        Returns:
        the unsigned bits
      • getGraphAreaInsets

        public org.eclipse.draw2d.geometry.Dimension getGraphAreaInsets()
        Returns:
        the two dimension insets (cropped_width, cropped_height) of graph area
      • getMax

        public double getMax()
        Returns:
        the max
      • getMin

        public double getMin()
        Returns:
        the min
      • getXAxis

        public final Axis getXAxis()
        Returns:
        the xAxis
      • getYAxis

        public final Axis getYAxis()
        Returns:
        the yAxis
      • isInRGBMode

        public boolean isInRGBMode()
        Returns:
        true if the input data is in RGB mode. For example, the input data is a 1D array of [RGBRGBRGBRGB...]
      • isRunMode

        public boolean isRunMode()
        Returns:
        the runMode
      • isShowRamp

        public boolean isShowRamp()
      • layout

        protected void layout()
        Overrides:
        layout in class org.eclipse.draw2d.Figure
      • setColorMap

        public final void setColorMap​(ColorMap colorMap)
        Parameters:
        colorMap - the colorMap to set
      • setCropBottom

        public final void setCropBottom​(int cropBottom)
        Parameters:
        cropBottom - the cropBottom to set
      • setCropLeft

        public final void setCropLeft​(int cropLeft)
        Parameters:
        cropLeft - the cropLeft to set
      • setCropRight

        public final void setCropRight​(int cropRight)
        Parameters:
        cropRight - the cropRigth to set
      • setCropTop

        public final void setCropTop​(int cropTop)
        Parameters:
        cropTop - the cropTop to set
      • setDataArray

        public final void setDataArray​(double[] data)
        Set the double[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(short[] data)
        Set the short[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(byte[] data)
        Set the byte[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(int[] data)
        Set the int[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(long[] data)
        Set the long[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(float[] data)
        Set the float[] data array for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataArray

        public final void setDataArray​(IPrimaryArrayWrapper dataWrapper)
        Set the data array wrapper for the intensity graph. It must be called in UI thread. Warning: for big image for example 1024*768, it may takes several milliseconds (10-50ms) to paint the image. If this is called too fast that exceeds the painting capability, it may cause memory leaking.
        Parameters:
        data - the dataArray to set
      • setDataHeight

        public final void setDataHeight​(int dataHeight)
        Parameters:
        dataHeight - the dataHeight to set
      • setDataWidth

        public final void setDataWidth​(int dataWidth)
        Parameters:
        dataWidth - the dataWidth to set
      • setInRGBMode

        public void setInRGBMode​(boolean inRGBMode)
        Set if the input data is in RGB mode. For example, the input data is a 1D array of [RGBRGBRGBRGB...]. If it is true, the color of the pixel will come from the data directly and the color map will be ignored.
        Parameters:
        inRGBMode - true if the input data in RGB mode.
      • setMax

        public final void setMax​(double max)
        Parameters:
        max - the max to set
      • setFont

        public void setFont​(org.eclipse.swt.graphics.Font f)
        Specified by:
        setFont in interface org.eclipse.draw2d.IFigure
        Overrides:
        setFont in class org.eclipse.draw2d.Figure
      • setMin

        public final void setMin​(double min)
        Parameters:
        min - the min to set
      • setUnsignedBits

        public final void setUnsignedBits​(int bits)
        Sets the unsigned bits
        Parameters:
        bits - the number of bits in the unsigned data, or zero and has to be <= 1023 (limit for IEEE doubles). If bits <= 0, the data is treated as having signed values.
      • setROIColor

        public void setROIColor​(org.eclipse.swt.graphics.Color roiColor)
        Set color of ROI figures.
        Parameters:
        roiColor -
      • getRoiColor

        public org.eclipse.swt.graphics.Color getRoiColor()
      • setROIDataBounds

        public void setROIDataBounds​(java.lang.String name,
                                     int xIndex,
                                     int yIndex,
                                     int width,
                                     int height)
      • getROI

        public ROIFigure getROI​(java.lang.String name)
      • setRunMode

        public void setRunMode​(boolean runMode)
        Parameters:
        runMode - the runMode to set
      • setShowRamp

        public void setShowRamp​(boolean show)
      • zoom

        private void zoom()
      • getBeanInfo

        public java.beans.BeanInfo getBeanInfo()
                                        throws java.beans.IntrospectionException
        Specified by:
        getBeanInfo in interface Introspectable
        Throws:
        java.beans.IntrospectionException
      • setColorDepth

        public void setColorDepth​(IntensityGraphFigure.ColorDepth colorDepth)
        Set Color depth of the image.
        Parameters:
        colorDepth - the colorDepth to set
      • isSingleLineProfiling

        public boolean isSingleLineProfiling()
        If it is profiling on single pixel.
        Returns:
        the isSinglePixelProfiling
      • setSingleLineProfiling

        public void setSingleLineProfiling​(boolean isSingleLineProfiling)
        Profile on single pixel.
        Parameters:
        isSingleLineProfiling - the isSinglePixelProfiling to set
      • getPixelInfo

        public java.lang.String getPixelInfo​(int xIndex,
                                             int yIndex,
                                             double xCoordinate,
                                             double yCoordinate,
                                             double pixelValue)
      • updateCroppedDataSize

        protected void updateCroppedDataSize()