Class ChromatogramGraphic
java.lang.Object
org.biojava.bio.chromatogram.graphic.ChromatogramGraphic
- All Implemented Interfaces:
Cloneable
Encapsulates a configurable method for drawing a
Chromatogram
into a graphics context.- Since:
- 1.3
- Author:
- Rhett Sutphin (UI CBCB), Matthew Pocock
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
A typesafe enumeration of the options available for configuring the behavior of aChromatogramGraphic
instance. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
Flag for call boxes.protected Map
The map containing the colors for drawing traces.protected boolean
Flag for drawable call boxes.protected Map
The map containing the fill colors for callboxes.protected Map
The map containing theChromatogramGraphic.Option
s and values for this instance.protected boolean
Flag for subpaths. -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor with no Chromatogram.Creates a newChromatogramGraphic
, initially displaying the given chromatogram. -
Method Summary
Modifier and TypeMethodDescriptionclone()
Performs a partial deep copy and invalidates regenerable structures.void
drawTo
(Graphics2D g2) Draws the chromatogram onto the provided graphics context.protected void
Precomputes theRectangle2D
s that are the in-memory representation of the callboxes.protected void
generateDrawableCallboxes
(AffineTransform shapeTx) Precomputes the callboxes in screen coordinates.protected void
Precomputes theGeneralPath
s used to draw the traces.Returns the color that will be used to draw the trace for the given DNA symbol.Returns the color that will be used to fill in the callboxes for calls with the given symbol.getCallboxBounds
(int index) Returns the screen-coordinate bounds of the callbox for a given call.getCallboxBounds
(int index, boolean boundsOnScreen) Returns the bounds of the callbox for a given call.int
Returns the number of callboxes, regenerating them if necessary.int
getCallContaining
(float x) Synonym forgetCallContaining(float, boolean)
withpointOnScreen
=true.int
getCallContaining
(float x, boolean xOnScreen) Same asgetCallContaining(Point2D, boolean)
, except that only the x-coordinate of the point is specified.int
getCallContaining
(Point2D point) Synonym forgetCallContaining(Point2D, boolean)
withpointOnScreen
=true.int
getCallContaining
(Point2D point, boolean pointOnScreen) Returns the 0-based index of the call containing a given point.Accessor for the in-use chromatogram.float
Helper method for converting aNumber
-valued option into afloat
primitive.int
Returns the height of the whole graphic (in pixels).float
Returns the in-use horizontal scale factor.int
Helper method for converting aNumber
-valued option into anint
primitive.Returns a new AffineTransform describing the transformation from output space to chromatogram space.Returns the current value for the specified option.int
Returns the width of the graphic as it will be rendered.int
getRenderedWidth
(float horizontalScale) Returns the width of the graphic as it would be rendered with the specified horizontal scale.Returns a new AffineTransform describing the transformation from chromatogram coordinates to output coordinates.void
getTransformAndConcat
(AffineTransform target) Concatenates the chromatogram-to-output transform to the provided given AffineTransform.float
Returns the in use vertical scale factor.int
getWidth()
Returns the width of the whole graphic (in pixels).boolean
Helper method for converting aBoolean
-valued option into aboolean
primitive.void
setBaseColor
(Symbol b, Color c) Maps a color to a DNA symbol.void
Sets the chromatogram to draw.void
setHeight
(int h) Sets the height (in pixels).void
setHorizontalScale
(float hs) Sets the horizontal scale (proportional).void
setOption
(ChromatogramGraphic.Option opt, Object value) Sets a new value for the specified option.void
setVerticalScale
(float vs) Sets the vertical scale (proportional).void
setWidth
(int w) Sets the width of the whole graphic (in pixels).
-
Field Details
-
subpathsValid
Flag for subpaths. -
callboxesValid
Flag for call boxes. -
drawableCallboxesValid
Flag for drawable call boxes. -
options
The map containing theChromatogramGraphic.Option
s and values for this instance. -
colors
The map containing the colors for drawing traces. Keys are DNA Symbols. -
fillColors
The map containing the fill colors for callboxes. Keys are DNA Symbols.
-
-
Constructor Details
-
ChromatogramGraphic
public ChromatogramGraphic()Default constructor with no Chromatogram. -
ChromatogramGraphic
Creates a newChromatogramGraphic
, initially displaying the given chromatogram.- Parameters:
c
- the Chromomatogram to display
-
-
Method Details
-
generateSubpaths
Precomputes theGeneralPath
s used to draw the traces. -
generateCallboxes
Precomputes theRectangle2D
s 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
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
Sets the chromatogram to draw.- Parameters:
c
- the new chromatogram- See Also:
-
getWidth
Returns the width of the whole graphic (in pixels).- Returns:
- the width
-
getHeight
Returns the height of the whole graphic (in pixels).- Returns:
- the height
-
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
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
Returns the width of the graphic as it will be rendered. This means that theChromatogramGraphic.Option.FROM_TRACE_SAMPLE
andChromatogramGraphic.Option.TO_TRACE_SAMPLE
bounds are taken into account.- Returns:
- the rendered width
-
getRenderedWidth
Returns the width of the graphic as it would be rendered with the specified horizontal scale. TheChromatogramGraphic.Option.FROM_TRACE_SAMPLE
andChromatogramGraphic.Option.TO_TRACE_SAMPLE
bounds are taken into account.- Parameters:
horizontalScale
- the horizontal scale- Returns:
- the rendered width at that scale
-
setHeight
Sets the height (in pixels). This will also change the vertical scale.- Parameters:
h
- the desired height in pixels- See Also:
-
setVerticalScale
Sets the vertical scale (proportional). This will also change the height.- Parameters:
vs
- the desired vertical scale. SeegetVerticalScale()
for semantics.- See Also:
-
setWidth
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
Sets the horizontal scale (proportional). This will also change the width.- Parameters:
hs
- the desired vertical scale. SeegetHorizontalScale()
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
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 symbolc
- the color
-
getCallboxCount
Returns the number of callboxes, regenerating them if necessary. This should almost always equalgetChromatogram().getSequenceLength()
- Returns:
- the number of callboxes
-
getCallboxBounds
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
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
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 forpointOnScreen
- 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
Synonym forgetCallContaining(Point2D, boolean)
withpointOnScreen
=true.- Parameters:
point
- the Point2D to search with- Returns:
- the call containing this point
-
getCallContaining
Same asgetCallContaining(Point2D, boolean)
, except that only the x-coordinate of the point is specified.- Parameters:
x
- the x-coordinate to search forxOnScreen
- whether the coordinate in screen space or chromatogram space- Returns:
- the index of the call containing the position x
-
getCallContaining
Synonym forgetCallContaining(float, boolean)
withpointOnScreen
=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
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 thangetTransform().createInverse()
-
drawTo
Draws the chromatogram onto the provided graphics context.- Parameters:
g2
- the Graphics2D to draw to
-
setOption
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 setvalue
- new value for the option- See Also:
-
getOption
Returns the current value for the specified option.- See Also:
-
optionIsTrue
Helper method for converting aBoolean
-valued option into aboolean
primitive.- Parameters:
opt
- theChromatogramGraphic.Option
to convert- Returns:
- true if the option is enabled
- Throws:
ClassCastException
- when the option isn'tBoolean
-valued
-
getFloatOption
Helper method for converting aNumber
-valued option into afloat
primitive.- Parameters:
opt
- theChromatogramGraphic.Option
to convert- Throws:
ClassCastException
- when the option isn'tNumber
-valued
-
getIntOption
Helper method for converting aNumber
-valued option into anint
primitive.- Parameters:
opt
- theChromatogramGraphic.Option
to convert- Throws:
ClassCastException
- when the option isn'tNumber
-valued
-
clone
Performs a partial deep copy and invalidates regenerable structures.
-