gov.noaa.pmel.sgt
Class CartesianGraph

java.lang.Object
  extended by gov.noaa.pmel.sgt.Graph
      extended by gov.noaa.pmel.sgt.CartesianGraph
All Implemented Interfaces:
java.beans.PropertyChangeListener, java.util.EventListener

public class CartesianGraph
extends Graph

The CartesianGraph provides the transformation from user to physical coordinates. A Cartesian graph has horizontal and vertical transforms, from user to physical coordinates, that are independent. For example, yp = f(yu) and xp = g(xu), where f() and g() are the vertical and horizontal transformations. Multiple horizontal and vertical, X and Y, axes can be associated with a CartesianGraph and their mapping of user to physical coordinates is based on the AxisTransforms used. The CartesianGraph also provide the support for the rendering of data. The specific renderer is chosen based on the type of SGTData and the data Attribute used.

The following demonstrates how a CartesianGraph may be used.

   // Create a CartesianGraph and transforms.

    CartesianGraph graph;
    LinearTransform xt, yt;
    Range2D xPhysRange, xUserRange;
    Range2D yPhysRange, yUserRange;
    Point2D.Double origin;

    graph = new CartesianGraph("Point Graph");
    layer.setGraph(graph);
    xt = new LinearTransform(xPhysRange, xUserRange);
    yt = new LinearTransform(yPhysRange, yUserRange);
    graph.setXTransform(xt);
    graph.setYTransform(yt);
    origin = new Point2D.Double(xUserRange.start,
                                yUserRange.start);

     // Create the bottom axis, set its range in user units
     // and its origin. Add the axis to the graph.

    PlainAxis xbot;

    xbot = new PlainAxis("Botton Axis");
    xbot.setRangeU(xUserRange);
    xbot.setLocationU(origin);
    graph.addXAxis(xbot);

     // Create the left axis, set its range in user units
     // and its origin. Add the axis to the graph.

    PlainAxis yleft;

    yleft = new PlainAxis("Left Axis");
    yleft.setRangeU(yUserRange);
    yleft.setLocationU(origin);
    graph.addYAxis(yleft);

     // Create a PointAttribute for the display of the
     // Collection of points. The points will be marked
     // with a red triangle and labelled at the NE corner
     // in blue.

    PointAttribute pattr;

    pattr = new PointAttribute(10, Color.red);

     // Associate the attribute and the point Collection
     // with the graph.

    graph.setData(col, pattr);
 

Since:
1.0
Version:
$Revision$, $Date$
Author:
Donald Denbo

Field Summary
protected  boolean clipping_
           
protected  SoTRange.Time tClipRange_
           
protected  java.util.Vector xAxis_
           
protected  Range2D xClipRange_
           
protected  AxisTransform xTransform_
           
protected  java.util.Vector yAxis_
           
protected  Range2D yClipRange_
           
protected  AxisTransform yTransform_
           
 
Fields inherited from class gov.noaa.pmel.sgt.Graph
layer_
 
Constructor Summary
CartesianGraph()
          Default constructor.
CartesianGraph(java.lang.String id)
          CartesianGraph constructor.
CartesianGraph(java.lang.String id, AxisTransform xt, AxisTransform yt)
          Create a new CartesianGraph.
 
Method Summary
 void addXAxis(Axis axis)
          Add a X axis (Axis.HORIZONTAL) to the graph.
 void addXAxis(java.lang.String id, Axis axis)
          Add a X axis (Axis.HORIZONTAL) to the graph.
 void addYAxis(Axis axis)
          Add a Y axis (Axis.VERTICAL) to the graph.
 void addYAxis(java.lang.String id, Axis axis)
          Add a Y axis (Axis.VERTICAL) to the graph.
 Graph copy()
          Create a copy of the CartesianGraph
 void draw(java.awt.Graphics g)
          Draw the graph, axes, and render the data.
 SGTData getDataAt(java.awt.Point pt)
          Find data at point
 int getNumberXAxis()
          Get the number of X axes associated with the graph.
 int getNumberYAxis()
          Get the number of Y axes associated with the graph.
 SoTPoint getPtoU(Point2D.Double loc)
          Transform physical coordinate to a SoTPoint
 CartesianRenderer getRenderer()
          Get the renderer instance being used by the graph.
 Axis getXAxis(java.lang.String id)
          Get a reference to an X axis.
 long getXPtoLongTime(double p)
          Transform physical X coordinate to time.
 SoTValue getXPtoSoT(double p)
          Transform physical X coordinate to user coordinate using SoTValue
 GeoDate getXPtoTime(double p)
          Transform physical X coordinate to time.
 double getXPtoU(double p)
          Transform physical X coordinate to user coordinate.
 AxisTransform getXTransform()
          Get the current X AxisTransform.
 int getXUtoD(double u)
          Transform user X coordinate to device coordinate.
 int getXUtoD(GeoDate t)
          Transform GeoDate to device coordinate.
 int getXUtoD(long t)
          Transform long to device coordinate.
 int getXUtoD(SoTValue val)
          Transform X SoTValue to device coordinate.
 double getXUtoD2(double u)
          Transform user X coordinate to device coordinate.
 double getXUtoD2(GeoDate t)
          Transform GeoDate to device coordinate.
 double getXUtoD2(long t)
          Transform long to device coordinate.
 double getXUtoD2(SoTValue val)
          Transform X SoTValue to device coordinate.
 double getXUtoP(double u)
          Transform user X coordinate to physical coordinate.
 double getXUtoP(GeoDate t)
          Transform GeoDate to physical coordinate.
 double getXUtoP(long t)
          Transform long to physical coordinate.
 double getXUtoP(SoTValue val)
          Transform X SoTValue to physical coordinate.
 Axis getYAxis(java.lang.String id)
          Get a reference to an Y axis.
 long getYPtoLongTime(double p)
          Transform physical Y coordinate to time.
 SoTValue getYPtoSoT(double p)
          Transform physical Y coordinate to user coordinate using SoTValue
 GeoDate getYPtoTime(double p)
          Transform physical Y coordinate to time.
 double getYPtoU(double p)
          Transform physical Y coordinate to user coordinate.
 AxisTransform getYTransform()
          Get the current Y AxisTransform.
 int getYUtoD(double u)
          Transform user Y coordinate to device coordinate
 int getYUtoD(GeoDate t)
          Transform time to device coordinate.
 int getYUtoD(long t)
          Transform time to device coordinate.
 int getYUtoD(SoTValue val)
          Transform Y SoTValue to device coordinate.
 double getYUtoD2(double u)
          Transform user Y coordinate to device coordinate
 double getYUtoD2(GeoDate t)
          Transform time to device coordinate.
 double getYUtoD2(long t)
          Transform time to device coordinate.
 double getYUtoD2(SoTValue val)
          Transform Y SoTValue to device coordinate.
 double getYUtoP(double u)
          Transoform user Y coordinate to physical coordinate.
 double getYUtoP(GeoDate t)
          Transform time to physical coordinate.
 double getYUtoP(long t)
          Transform time to physical coordinate.
 double getYUtoP(SoTValue val)
          Transform Y SoTValue to physical coordinate.
 boolean isClipping()
          Test the clipping property.
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
 void removeAllXAxes()
          Remove all X axes from the graph.
 void removeAllYAxes()
          Remove all Y axes from the graph.
 void removeXAxis(Axis axis)
          Remove an X axis from the graph.
 void removeXAxis(java.lang.String id)
          Remove an X axis from the graph.
 void removeYAxis(Axis axis)
          Remove an Y axis from the graph.
 void removeYAxis(java.lang.String id)
          Remove an Y axis from the graph.
 void setClip(double xmin, double xmax, double ymin, double ymax)
          Set the clipping rectangle in user coordinates.
 void setClip(GeoDate tmin, GeoDate tmax, double min, double max)
          Set the clipping rectangle in user coordinates.
 void setClip(long tmin, long tmax, double min, double max)
          Set the clipping rectangle in user coordinates.
 void setClip(SoTRange xr, SoTRange yr)
          Set the clipping rectangle in user coordinates.
 void setClipping(boolean clip)
          Set the clipping property.
 void setData(SGTData data, Attribute attr)
          Associates SGTData and Attribute with the CartesianGraph.
 void setRenderer(CartesianRenderer rend)
          Set the renderer used by the graph.
 void setXTransform(AxisTransform xfrm)
          Set the X AxisTransform.
 void setYTransform(AxisTransform xfrm)
          Set the Y AxisTransform.
 java.util.Enumeration xAxisElements()
          Get an Enumeration object for the X axes.
 java.util.Enumeration yAxisElements()
          Get an Enumeration object for the Y axes.
 
Methods inherited from class gov.noaa.pmel.sgt.Graph
computeRange, computeRange, computeRange, getId, getLayer, getPane, modified, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

xAxis_

protected java.util.Vector xAxis_

yAxis_

protected java.util.Vector yAxis_

xTransform_

protected AxisTransform xTransform_

yTransform_

protected AxisTransform yTransform_

clipping_

protected boolean clipping_

xClipRange_

protected Range2D xClipRange_

yClipRange_

protected Range2D yClipRange_

tClipRange_

protected SoTRange.Time tClipRange_
Constructor Detail

CartesianGraph

public CartesianGraph()
Default constructor.


CartesianGraph

public CartesianGraph(java.lang.String id)
CartesianGraph constructor. Creates default unity transforms.

Parameters:
id - CartesianGraph identifier

CartesianGraph

public CartesianGraph(java.lang.String id,
                      AxisTransform xt,
                      AxisTransform yt)
Create a new CartesianGraph. Sets the identifier and sets the x and y transforms.

Parameters:
id - identifier
xt - x transform
yt - y transform
Method Detail

copy

public Graph copy()
Create a copy of the CartesianGraph

Specified by:
copy in class Graph

setData

public void setData(SGTData data,
                    Attribute attr)
Associates SGTData and Attribute with the CartesianGraph. A renderer is constucted based on the two arguements.

SGTData

Attribute

CartesianRenderer

SGTPoint PontAttribute PointCartesianRenderer
SGTLine LineAttribute LineCartesianRenderer
SGTGrid GridAttribute GridCartesianRenderer
SGTVector VectorAttribute VectorCartesianRenderer
Collection PointAttribute PointCartesianRenderer
Collection LineAttribute LineCartesianRenderer
Collection VectorAttribute VectorCartesianRenderer
Annotation n/a AnnotationCartesianRenderer

Parameters:
data - data to be rendered
attr - rendering style information
See Also:
CartesianRenderer.getRenderer(gov.noaa.pmel.sgt.CartesianGraph, gov.noaa.pmel.sgt.dm.SGTData, gov.noaa.pmel.sgt.Attribute)

getRenderer

public CartesianRenderer getRenderer()
Get the renderer instance being used by the graph.

Returns:
renderer

setRenderer

public void setRenderer(CartesianRenderer rend)
Set the renderer used by the graph.

Parameters:
rend - a renderer object

draw

public void draw(java.awt.Graphics g)
Draw the graph, axes, and render the data. This method should not be directly called.

See Also:
Pane.draw()

setClip

public void setClip(double xmin,
                    double xmax,
                    double ymin,
                    double ymax)
Set the clipping rectangle in user coordinates.

Parameters:
xmin - minimum horizontal coordinate
xmax - maximum horizontal coordinate
ymin - minimum vertical coordinate
ymax - maximum vertical coordinate

setClip

public void setClip(GeoDate tmin,
                    GeoDate tmax,
                    double min,
                    double max)
Set the clipping rectangle in user coordinates.

Parameters:
tmin - mimimum time
tmax - maximum time
min - miminum user coordinate
max - maximum user coordinate

setClip

public void setClip(long tmin,
                    long tmax,
                    double min,
                    double max)
Set the clipping rectangle in user coordinates.

Parameters:
tmin - mimimum time
tmax - maximum time
min - miminum user coordinate
max - maximum user coordinate
Since:
3.0

setClip

public void setClip(SoTRange xr,
                    SoTRange yr)
Set the clipping rectangle in user coordinates.

Since:
2.0

setClipping

public void setClipping(boolean clip)
Set the clipping property.

Parameters:
clip - clipping

isClipping

public boolean isClipping()
Test the clipping property.

Returns:
true if clipping is active

addXAxis

public void addXAxis(java.lang.String id,
                     Axis axis)
Add a X axis (Axis.HORIZONTAL) to the graph.

Parameters:
id - axis identifier
axis - X axis
See Also:
Axis, PlainAxis

addXAxis

public void addXAxis(Axis axis)
Add a X axis (Axis.HORIZONTAL) to the graph. Uses the existing axis identifier.

Parameters:
axis - X axis
See Also:
Axis, PlainAxis

getXAxis

public Axis getXAxis(java.lang.String id)
              throws AxisNotFoundException
Get a reference to an X axis.

Parameters:
id - axis identifier
Returns:
axis found
Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeXAxis

public void removeXAxis(java.lang.String id)
                 throws AxisNotFoundException
Remove an X axis from the graph.

Parameters:
id - axis identifier
Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeXAxis

public void removeXAxis(Axis axis)
                 throws AxisNotFoundException
Remove an X axis from the graph.

Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeAllXAxes

public void removeAllXAxes()
Remove all X axes from the graph.


getNumberXAxis

public int getNumberXAxis()
Get the number of X axes associated with the graph.

Returns:
number of axes
See Also:
Axis, PlainAxis

xAxisElements

public java.util.Enumeration xAxisElements()
Get an Enumeration object for the X axes.

Returns:
enumeration

addYAxis

public void addYAxis(java.lang.String id,
                     Axis axis)
Add a Y axis (Axis.VERTICAL) to the graph.

Parameters:
id - axis identifier
axis - Y axis
See Also:
Axis, PlainAxis

addYAxis

public void addYAxis(Axis axis)
Add a Y axis (Axis.VERTICAL) to the graph. Uses the existing axis identifier.

Parameters:
axis - Y axis
See Also:
Axis, PlainAxis

getYAxis

public Axis getYAxis(java.lang.String id)
              throws AxisNotFoundException
Get a reference to an Y axis.

Parameters:
id - axis identifier
Returns:
axis found
Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeYAxis

public void removeYAxis(java.lang.String id)
                 throws AxisNotFoundException
Remove an Y axis from the graph.

Parameters:
id - axis identifier
Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeYAxis

public void removeYAxis(Axis axis)
                 throws AxisNotFoundException
Remove an Y axis from the graph.

Throws:
AxisNotFoundException - An axis was not found with the correct identifier.
See Also:
Axis, PlainAxis

removeAllYAxes

public void removeAllYAxes()
Remove all Y axes from the graph.


getNumberYAxis

public int getNumberYAxis()
Get the number of Y axes associated with the graph.

Returns:
number of axes
See Also:
Axis, PlainAxis

yAxisElements

public java.util.Enumeration yAxisElements()
Get an Enumeration object for the Y axes.

Returns:
enumeration

setXTransform

public void setXTransform(AxisTransform xfrm)
Set the X AxisTransform. This transform is used to convert to and from user to physical coordinates.

Parameters:
xfrm - X transform
See Also:
AxisTransform, LinearTransform

getXTransform

public AxisTransform getXTransform()
Get the current X AxisTransform.

Returns:
X Transform
See Also:
AxisTransform, LinearTransform

setYTransform

public void setYTransform(AxisTransform xfrm)
Set the Y AxisTransform. This transform is used to convert to and from user to physical coordinates.

Parameters:
xfrm - Y transform
See Also:
AxisTransform, LinearTransform

getYTransform

public AxisTransform getYTransform()
Get the current Y AxisTransform.

Returns:
Y Transform
See Also:
AxisTransform, LinearTransform

getXUtoP

public double getXUtoP(double u)
Transform user X coordinate to physical coordinate.

Since:
2.0

getXUtoD

public int getXUtoD(double u)
Transform user X coordinate to device coordinate.

Since:
2.0

getXUtoD2

public double getXUtoD2(double u)
Transform user X coordinate to device coordinate.

Since:
3.0

getXUtoP

public double getXUtoP(GeoDate t)
Transform GeoDate to physical coordinate.

Since:
2.0

getXUtoP

public double getXUtoP(long t)
Transform long to physical coordinate.

Since:
3.0

getXUtoD

public int getXUtoD(GeoDate t)
Transform GeoDate to device coordinate.

Since:
2.0

getXUtoD

public int getXUtoD(long t)
Transform long to device coordinate.

Since:
3.0

getXUtoD2

public double getXUtoD2(GeoDate t)
Transform GeoDate to device coordinate.

Since:
3.0

getXUtoD2

public double getXUtoD2(long t)
Transform long to device coordinate.

Since:
3.0

getXUtoD

public int getXUtoD(SoTValue val)
Transform X SoTValue to device coordinate.

Since:
3.0

getYUtoD

public int getYUtoD(SoTValue val)
Transform Y SoTValue to device coordinate.

Since:
3.0

getXUtoD2

public double getXUtoD2(SoTValue val)
Transform X SoTValue to device coordinate.

Since:
3.0

getYUtoD2

public double getYUtoD2(SoTValue val)
Transform Y SoTValue to device coordinate.

Since:
3.0

getXUtoP

public double getXUtoP(SoTValue val)
Transform X SoTValue to physical coordinate.

Since:
3.0

getYUtoP

public double getYUtoP(SoTValue val)
Transform Y SoTValue to physical coordinate.

Since:
3.0

getXPtoSoT

public SoTValue getXPtoSoT(double p)
Transform physical X coordinate to user coordinate using SoTValue

Parameters:
p - physical coordinate
Returns:
user coorindinate
Since:
3.0

getXPtoU

public double getXPtoU(double p)
Transform physical X coordinate to user coordinate.

Parameters:
p - physical coorindate
Returns:
user coordinate

getXPtoTime

public GeoDate getXPtoTime(double p)
Transform physical X coordinate to time.

Parameters:
p - physical coordinate
Returns:
time

getXPtoLongTime

public long getXPtoLongTime(double p)
Transform physical X coordinate to time.

Parameters:
p - physical coordinate
Returns:
time
Since:
3.0

getPtoU

public SoTPoint getPtoU(Point2D.Double loc)
Transform physical coordinate to a SoTPoint

Parameters:
p - physical coordinate
Returns:
SoTPoint
Since:
3.0

getYUtoP

public double getYUtoP(double u)
Transoform user Y coordinate to physical coordinate.

Since:
2.0

getYUtoD

public int getYUtoD(double u)
Transform user Y coordinate to device coordinate

Since:
2.0

getYUtoD2

public double getYUtoD2(double u)
Transform user Y coordinate to device coordinate

Since:
3.0

getYUtoP

public double getYUtoP(GeoDate t)
Transform time to physical coordinate.

Since:
2.0

getYUtoP

public double getYUtoP(long t)
Transform time to physical coordinate.

Since:
3.0

getYUtoD

public int getYUtoD(GeoDate t)
Transform time to device coordinate.

Since:
2.0

getYUtoD

public int getYUtoD(long t)
Transform time to device coordinate.

Since:
3.0

getYUtoD2

public double getYUtoD2(GeoDate t)
Transform time to device coordinate.

Since:
3.0

getYUtoD2

public double getYUtoD2(long t)
Transform time to device coordinate.

Since:
3.0

getYPtoSoT

public SoTValue getYPtoSoT(double p)
Transform physical Y coordinate to user coordinate using SoTValue

Parameters:
p - physical coordinate
Returns:
user coorindinate
Since:
3.0

getYPtoU

public double getYPtoU(double p)
Transform physical Y coordinate to user coordinate.

Parameters:
p - physical coorindate
Returns:
user coordinate

getYPtoTime

public GeoDate getYPtoTime(double p)
Transform physical Y coordinate to time.

Parameters:
p - physical coordinate
Returns:
time

getYPtoLongTime

public long getYPtoLongTime(double p)
Transform physical Y coordinate to time.

Parameters:
p - physical coordinate
Returns:
time
Since:
3.0

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)

getDataAt

public SGTData getDataAt(java.awt.Point pt)
Find data at point

Specified by:
getDataAt in class Graph
Since:
3.0