

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object net.sourceforge.webcompmath.draw.CoordinateRect
public class CoordinateRect
A CoordinateRect represents a rectagular region in the xyplane, specified by values xmin,xmax,ymin,ymax. The conditions ymin < ymax and xmin < xmax are enforced. (Values are swapped if necessary, and if min==max, they are reset to 1 and +1. If any of the values are set to an infinite or NaN value, then the coordinate rect won't display anything except the message "Error: undefined limits".)
When the Rect is mapped onto the screen, there can be a gap of a specified number of pixels between the min,max values and the edges of the rectangle on the screen. If the gap is nonzero, then the actual range of coordinates on the rect is larger than the range from the specifed min to max. (This is done mainly so I could have axes that don't quite reach the edges of the rect.)
A CoordinateRect maintains a list of Drawable items. When the Rect's draw() method is called, it calls the draw() method of each of the Drawable items it contains. When its compute() method is called, it calls the compute() method of any Drawable that is a Computable. When its checkInput() method is called, it calls the checkInput() method of any Drawable that is an InputObject.
A CoordinateRect represents a rectangular region in a DisplayCanvas. It has a reference to that Canvas, which is set automatically when it is added to the canvas. If the size, range, or gap on the CoordinateRect change, it will ask the Canvas to redraw the area it occupies.
The values of xmin, xmax, ymin, ymax are exported as Value objects, which can be used elsewhere in your program. The Value objects can be obtained by calling getValueObject(). If you do this, you should add the objects that depend on those values to a Controller and register the Controller to listen for changes from this CoordinateRect by calling the CoordinateRect.setOnChange(Controller) method.
Field Summary  

protected boolean 
changed
Set to true when one of the limits or the gap has changed. 
protected java.util.Vector 
drawItems
Drawable items contained in this CoordinateRect 
protected Controller 
onChange
If nonnull, this is the Controller that is notified when the limits change. 
protected Tie 
syncWith
This contains other Limit objects with which the CoordinateRect is synchronizing. 
static int 
XMAX
A constant for use with the getValueObject() method to specify which Value is to be returned. 
static int 
XMIN
A constant for use with the getValueObject() method to specify which Value is to be returned. 
static int 
YMAX
A constant for use with the getValueObject() method to specify which Value is to be returned. 
static int 
YMIN
A constant for use with the getValueObject() method to specify which Value is to be returned. 
Constructor Summary  

CoordinateRect()
Create a CoordinateRect with default limits: 5, 5, 5, 5. 

CoordinateRect(double xmin,
double xmax,
double ymin,
double ymax)
Create a CoordinateRect with specified limits. 
Method Summary  

void 
add(Drawable d)
Add a drawable item to the CoordinateRect. 
void 
checkInput()
When this is called, the CoordinateRect will call the checkInput method of any Drawable it contains that is also an InputObject. 
void 
clearRestoreBuffer()
A CoordinateRect can store its current limits in a buffer. 
void 
compute()
When this is called, the CoordinateRect will call the compute method of any Drawable it contains that is also a Computable. 
protected void 
doDraw(java.awt.Graphics g)
Draw all the Drawable items. 
void 
draw(java.awt.Graphics g,
int width,
int height)
Draw in rect with upperleft corner (0,0) and specified width,height. 
void 
draw(java.awt.Graphics g,
int left,
int top,
int width,
int height)
Draw in specified rect. 
double[] 
equalizeAxes()
Reset limits, if necessary, so scales on the axes are the same. 
Drawable 
getDrawable(int i)
Get the ith Drawable in this Rect, or null if i is less than zero or greater than or equal to the number of items. 
int 
getDrawableCount()
Returns the number of Drawable items that are in this CoordinateRect. 
int 
getGap()
Get the gap, in pixels, between the edges of the CoordinateRect and the limits specified by xmin, xmax, ymin, and ymax. 
int 
getHeight()
Get the height in pixels of this CoordinateRect in the DisplayCanvas that contains it. 
int 
getLeft()
Get the left edge of this CoordinateRect in the DisplayCanvas that contains it. 
double[] 
getLimits()
Get an array containing the limits on the CoordinateRect in the order xmin, xmax, ymin, ymax. 
Controller 
getOnChange()
Get the controller that is notified when the limits on this CoordinateRect change. 
double 
getPixelHeight()
Return the height of one pixel in this coordinate system. 
double 
getPixelWidth()
Return the width of one pixel in this coordinate system. 
double[] 
getRestoreBuffer()
Get an array containing the limits for the restore buffer in the order xmin, xmax, ymin, ymax. 
long 
getSerialNumber()
Return the serial number of the CoordinateRect, which is incremented each time the limits change. 
int 
getTop()
Get the top edge of this CoordinateRect in the DisplayCanvas that contains it. 
Value 
getValueObject(int which)
Get a Value object representing one of the limits on this CoordinateRect. 
int 
getWidth()
Get the width in pixels of this CoordinateRect in the DisplayCanvas that contains it. 
double 
getXmax()
Get the maximum xcoordinate. 
double 
getXmin()
Get the mimimum xcoordinate. 
double 
getYmax()
Get the maximum xcoordinate. 
double 
getYmin()
Get the mimimum ycoordinate. 
boolean 
isSyncX()
Get whether to sync xmin and xmax with limits 
boolean 
isSyncY()
Get whether to sync ymin and ymax with limits 
void 
notifyControllerOnChange(Controller c)
Method required by InputObject interface; in this class, it calls the same method recursively on any input objects containted in this CoordinateRect. 
double 
pixelToX(float h)
Convert a horizontal pixel coordinate into an xcoordinate. 
double 
pixelToX(int h)
Convert a horizontal pixel coordinate into an xcoordinate. 
double 
pixelToY(float y)
Convert a vertical pixel coordinate into a ycoordinate. 
double 
pixelToY(int y)
Convert a vertical pixel coordinate into a ycoordinate. 
void 
remove(Drawable d)
Remove the given Drawable item, if present in this CoordinateRect. 
double[] 
restore()
A CoordinateRect can store its current limits in a buffer. 
void 
setGap(int g)
Set the gap. 
void 
setLimits(double[] d)
Set the coordinate limits from array; extra elements in array are ignored. 
void 
setLimits(double xmin,
double xmax,
double ymin,
double ymax)
Set the limits on the CoordinteRect 
void 
setLimitsAndRestoreBuffer(double[] d)
Set the coordinate limits, and also set the restore buffer. 
void 
setLimitsLazy(double xmin,
double xmax,
double ymin,
double ymax)
Set the limits on the CoordinteRect, but don't call compute. 
void 
setOnChange(Controller c)
Specify a controller to be notified when the limits on this CoordinateRect change. 
void 
setRestoreBuffer()
Save current limits in buffer. 
void 
setRestoreBuffer(double[] limits)
Save specific limits in buffer. 
void 
setSyncWith(Tie tie)
Set the Tie object that is used to synchronize this CoordinareRect with other objects. 
void 
setSyncX(boolean syncX)
Set whether to sync xmin and xmax with limits 
void 
setSyncY(boolean syncY)
Get whether to sync ymin and ymax with limits 
void 
sync(Tie tie,
Tieable newest)
Part of the Tieable interface. 
int 
xToPixel(double x)
Convert an xcoodinate into a horizontal pixel coordinate. 
float 
xToPixelF(double x)
Convert an xcoodinate into a horizontal pixel coordinate. 
int 
yToPixel(double y)
Convert a ycoodinate into a vertical pixel coordinate. 
float 
yToPixelF(double y)
Convert a ycoodinate into a vertical pixel coordinate. 
double[] 
zoomIn()
Change limits to zoom in by a factor of 2. 
double[] 
zoomInOnPixel(int x,
int y)
Change limits to zoom in by a factor of 2, centered on a specified point. 
double[] 
zoomOut()
Change limits to zoom out by a factor of 2. 
double[] 
zoomOutFromPixel(int x,
int y)
Change limits to zoom out by a factor of 2, centered on a specified point. 
Methods inherited from class java.lang.Object 

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
Field Detail 

protected java.util.Vector drawItems
protected boolean changed
protected Tie syncWith
public static final int XMIN
public static final int XMAX
public static final int YMIN
public static final int YMAX
protected Controller onChange
Constructor Detail 

public CoordinateRect()
public CoordinateRect(double xmin, double xmax, double ymin, double ymax)
xmin
 minimum x coordxmax
 mzximum x coordymin
 minimum y coordymax
 maximum y coordMethod Detail 

public double getXmin()
public double getXmax()
public double getYmin()
public double getYmax()
public int getGap()
public void setGap(int g)
g
 gap in pixelspublic double[] getLimits()
getLimits
in interface Limits
public void setLimits(double xmin, double xmax, double ymin, double ymax)
xmin
 the minimum xcoordinate on the CoordinateRectxmax
 the maximum xcoordinate on the CoordinateRectymin
 the minimum ycoordinate on the CoordinateRectymax
 the maximum ycoordinate on the CoordinateRectpublic void setLimitsLazy(double xmin, double xmax, double ymin, double ymax)
xmin
 the minimum xcoordinate on the CoordinateRectxmax
 the maximum xcoordinate on the CoordinateRectymin
 the minimum ycoordinate on the CoordinateRectymax
 the maximum ycoordinate on the CoordinateRectpublic void setLimits(double[] d)
setLimits
in interface Limits
d
 limits of CoordinateRectpublic void setLimitsAndRestoreBuffer(double[] d)
d
 the limits to setpublic void setOnChange(Controller c)
c
 controller to usepublic Controller getOnChange()
public Value getValueObject(int which)
which
 specifies one of XMIN, XMAX, YMIN, YMAX
public long getSerialNumber()
getSerialNumber
in interface Tieable
public void setSyncWith(Tie tie)
tie
 the tie for synchronizationpublic void sync(Tie tie, Tieable newest)
sync
in interface Tieable
tie
 the tie to usenewest
 the object to synch withpublic int getLeft()
public int getWidth()
public int getTop()
public int getHeight()
public double getPixelWidth()
public double getPixelHeight()
public int xToPixel(double x)
x
 x coord to convert
public float xToPixelF(double x)
x
 x coord to convert
public int yToPixel(double y)
y
 y coord to conver
public float yToPixelF(double y)
y
 y coord to conver
public double pixelToX(int h)
h
 pixel coord to convert
public double pixelToX(float h)
h
 pixel coord to convert
public double pixelToY(int y)
y
 pixel coord to convert
public double pixelToY(float y)
y
 pixel coord to convert
public double[] restore()
public void clearRestoreBuffer()
public void setRestoreBuffer()
public void setRestoreBuffer(double[] limits)
limits
 the limits to setpublic double[] getRestoreBuffer()
public double[] zoomIn()
public double[] zoomOut()
public double[] zoomInOnPixel(int x, int y)
x
 the horizontal pixel coordinate of the center point of the
zoomy
 the vertical pixel coordinate of the center point of the zoom
public double[] zoomOutFromPixel(int x, int y)
x
 the horizontal pixel coordinate of the center point of the
zoomy
 the vertical pixel coordinate of the center point of the zoom
public double[] equalizeAxes()
public void checkInput()
checkInput
in interface InputObject
public void compute()
compute
in interface Computable
public void notifyControllerOnChange(Controller c)
notifyControllerOnChange
in interface InputObject
c
 the controllerpublic void add(Drawable d)
d
 item to addpublic void remove(Drawable d)
d
 item to removepublic int getDrawableCount()
public Drawable getDrawable(int i)
i
 The number of the item to be returned, where the first item is
number zero.
public void draw(java.awt.Graphics g, int width, int height)
g
 graphics contextwidth
 width to draw inheight
 height to draw inpublic void draw(java.awt.Graphics g, int left, int top, int width, int height)
g
 graphics contextleft
 left edgetop
 top edgewidth
 width of rectheight
 height of rectprotected void doDraw(java.awt.Graphics g)
g
 graphics contextpublic boolean isSyncX()
public void setSyncX(boolean syncX)
syncX
 the syncX to setpublic boolean isSyncY()
public void setSyncY(boolean syncY)
syncY
 the syncY to set


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 