Class ChromatogramGraphic

java.lang.Object
org.biojava.bio.chromatogram.graphic.ChromatogramGraphic
All Implemented Interfaces:
Cloneable

public class ChromatogramGraphic extends Object implements Cloneable
Encapsulates a configurable method for drawing a Chromatogram into a graphics context.
Since:
1.3
Author:
Rhett Sutphin (UI CBCB), Matthew Pocock
  • Field Details

    • subpathsValid

      protected boolean subpathsValid
      Flag for subpaths.
    • callboxesValid

      protected boolean callboxesValid
      Flag for call boxes.
    • drawableCallboxesValid

      protected boolean drawableCallboxesValid
      Flag for drawable call boxes.
    • options

      protected Map options
      The map containing the ChromatogramGraphic.Options and values for this instance.
    • colors

      protected Map colors
      The map containing the colors for drawing traces. Keys are DNA Symbols.
    • fillColors

      protected Map fillColors
      The map containing the fill colors for callboxes. Keys are DNA Symbols.
  • Constructor Details

    • ChromatogramGraphic

      Default constructor with no Chromatogram.
    • ChromatogramGraphic

      Creates a new ChromatogramGraphic, initially displaying the given chromatogram.
      Parameters:
      c - the Chromomatogram to display
  • Method Details

    • generateSubpaths

      protected void generateSubpaths()
      Precomputes the GeneralPaths used to draw the traces.
    • generateCallboxes

      protected void generateCallboxes()
      Precomputes the Rectangle2Ds that are the in-memory representation of the callboxes. These rectangles are used for drawing (via generateDrawableCallboxes) as well as queries (e.g., getCallContaining(java.awt.geom.Point2D, boolean)).
    • generateDrawableCallboxes

      protected void generateDrawableCallboxes(AffineTransform shapeTx)
      Precomputes the callboxes in screen coordinates.
      Parameters:
      shapeTx - the transform to apply to the callboxes to move them into screen space.
    • getChromatogram

      Accessor for the in-use chromatogram.
      Returns:
      the chromatogram that a call to drawTo(java.awt.Graphics2D) will draw
    • setChromatogram

      public void setChromatogram(Chromatogram c)
      Sets the chromatogram to draw.
      Parameters:
      c - the new chromatogram
      See Also:
    • getWidth

      public int getWidth()
      Returns the width of the whole graphic (in pixels).
      Returns:
      the width
    • getHeight

      public int getHeight()
      Returns the height of the whole graphic (in pixels).
      Returns:
      the height
    • getHorizontalScale

      public float getHorizontalScale()
      Returns the in-use horizontal scale factor. The "units" of this value are (trace samples) / pixel. For example, a horizontal scale of 1.0 means that there will be one pixel horizontally for each trace sample.
      Returns:
      the horizontal scale
    • getVerticalScale

      public float getVerticalScale()
      Returns the in use vertical scale factor. The "units" of this value are (trace value bins) / pixel. For example, a vertical scale of 1.0 means that there will be one pixel vertically for each value in the range [0, getChromatogram().getMax()].
      Returns:
      the vertical scale
    • getRenderedWidth

      public int getRenderedWidth()
      Returns the width of the graphic as it will be rendered. This means that the ChromatogramGraphic.Option.FROM_TRACE_SAMPLE and ChromatogramGraphic.Option.TO_TRACE_SAMPLE bounds are taken into account.
      Returns:
      the rendered width
    • getRenderedWidth

      public int getRenderedWidth(float horizontalScale)
      Returns the width of the graphic as it would be rendered with the specified horizontal scale. The ChromatogramGraphic.Option.FROM_TRACE_SAMPLE and ChromatogramGraphic.Option.TO_TRACE_SAMPLE bounds are taken into account.
      Parameters:
      horizontalScale - the horizontal scale
      Returns:
      the rendered width at that scale
    • setHeight

      public void setHeight(int h)
      Sets the height (in pixels). This will also change the vertical scale.
      Parameters:
      h - the desired height in pixels
      See Also:
    • setVerticalScale

      public void setVerticalScale(float vs)
      Sets the vertical scale (proportional). This will also change the height.
      Parameters:
      vs - the desired vertical scale. See getVerticalScale() for semantics.
      See Also:
    • setWidth

      public void setWidth(int w)
      Sets the width of the whole graphic (in pixels). This will also change the horizontal scale.
      Parameters:
      w - the desired width in pixels
      See Also:
    • setHorizontalScale

      public void setHorizontalScale(float hs)
      Sets the horizontal scale (proportional). This will also change the width.
      Parameters:
      hs - the desired vertical scale. See getHorizontalScale() for semantics.
      See Also:
    • getBaseColor

      Returns the color that will be used to draw the trace for the given DNA symbol.
      Parameters:
      b - the symbol
      Returns:
      the color, or null if none is set
    • getBaseFillColor

      Returns the color that will be used to fill in the callboxes for calls with the given symbol.
      Parameters:
      b - the symbol
      Returns:
      the color, or null if none is set
    • setBaseColor

      public void setBaseColor(Symbol b, Color c)
      Maps a color to a DNA symbol. The color as specified will be used for to draw the trace for the symbol (if any). The fill color for calls to the symbol will be derived from the trace color.
      Parameters:
      b - the symbol
      c - the color
    • getCallboxCount

      public int getCallboxCount()
      Returns the number of callboxes, regenerating them if necessary. This should almost always equal getChromatogram().getSequenceLength()
      Returns:
      the number of callboxes
    • getCallboxBounds

      public Rectangle2D getCallboxBounds(int index)
      Returns the screen-coordinate bounds of the callbox for a given call.
      Parameters:
      index - the callbox for which to get the bounds 0-based
      Returns:
      a Rectangle2D giving the bounds of the call box
    • getCallboxBounds

      public Rectangle2D getCallboxBounds(int index, boolean boundsOnScreen)
      Returns the bounds of the callbox for a given call.
      Parameters:
      index - the callbox for which to get the bounds 0-based.
      boundsOnScreen - determines the coordinate system of the returned bounds
      Returns:
      the bounds of the callbox in screen coordinates if boundsOnScreen is true, otherwise the bounds of the callbox in chromatogram coordinates
    • getCallContaining

      public int getCallContaining(Point2D point, boolean pointOnScreen)
      Returns the 0-based index of the call containing a given point. The point may be either in screen space or chromatogram space, scale-wise. If the point is in screen space, the caller must translate the point such that if it is, for instance, from a mouse click, a click on the upper-left corner of the graphic would be (0,0).
      Parameters:
      point - the point to search for
      pointOnScreen - if true, the point will be treated as though it is in screen space. Otherwise, it will be considered to be in chromatogram space.
      Returns:
      the 0-based index of the callbox which contains the point
    • getCallContaining

      public int getCallContaining(Point2D point)
      Synonym for getCallContaining(Point2D, boolean) with pointOnScreen=true.
      Parameters:
      point - the Point2D to search with
      Returns:
      the call containing this point
    • getCallContaining

      public int getCallContaining(float x, boolean xOnScreen)
      Same as getCallContaining(Point2D, boolean), except that only the x-coordinate of the point is specified.
      Parameters:
      x - the x-coordinate to search for
      xOnScreen - whether the coordinate in screen space or chromatogram space
      Returns:
      the index of the call containing the position x
    • getCallContaining

      public int getCallContaining(float x)
      Synonym for getCallContaining(float, boolean) with pointOnScreen=true.
      Parameters:
      x - the x-coordinate to search for
      Returns:
      the index of the call containing the position x
    • getTransform

      Returns a new AffineTransform describing the transformation from chromatogram coordinates to output coordinates.
    • getTransformAndConcat

      public void getTransformAndConcat(AffineTransform target)
      Concatenates the chromatogram-to-output transform to the provided given AffineTransform.
    • getInvTransform

      Returns a new AffineTransform describing the transformation from output space to chromatogram space. Should be much more efficient than getTransform().createInverse()
    • drawTo

      public void drawTo(Graphics2D g2)
      Draws the chromatogram onto the provided graphics context.
      Parameters:
      g2 - the Graphics2D to draw to
    • setOption

      public void setOption(ChromatogramGraphic.Option opt, Object value)
      Sets a new value for the specified option. Be sure that the value is appropriate per the documentation, or you'll induce a ClassCastException somewhere else.
      Parameters:
      opt - Option to set
      value - new value for the option
      See Also:
    • getOption

      Returns the current value for the specified option.
      See Also:
    • optionIsTrue

      Helper method for converting a Boolean-valued option into a boolean primitive.
      Parameters:
      opt - the ChromatogramGraphic.Option to convert
      Returns:
      true if the option is enabled
      Throws:
      ClassCastException - when the option isn't Boolean-valued
    • getFloatOption

      Helper method for converting a Number-valued option into a float primitive.
      Parameters:
      opt - the ChromatogramGraphic.Option to convert
      Throws:
      ClassCastException - when the option isn't Number-valued
    • getIntOption

      Helper method for converting a Number-valued option into an int primitive.
      Parameters:
      opt - the ChromatogramGraphic.Option to convert
      Throws:
      ClassCastException - when the option isn't Number-valued
    • clone

      public Object clone()
      Performs a partial deep copy and invalidates regenerable structures.
      Overrides:
      clone in class Object
      Returns:
      an Object that is castable to ChromatogramGraphic