|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--edu.hws.jcm.draw.CoordinateRect
A CoordinateRect represents a rectagular region in the xy-plane, 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 non-zero, 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 non-null, 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 i-th 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. |
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 x-coordinate. |
double |
getXmin()
Get the mimimum x-coordinate. |
double |
getYmax()
Get the maximum x-coordinate. |
double |
getYmin()
Get the mimimum y-coordinate. |
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(int h)
Convert a horizontal pixel coordinate into an x-coordinate. |
double |
pixelToY(int y)
Convert a vertical pixel coordinate into a y-coordinate. |
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 |
setOnChange(Controller c)
Specify a controller to be notified when the limits on this CoordinateRect change. |
void |
setRestoreBuffer()
Save current limits in buffer. |
void |
setSyncWith(Tie tie)
Set the Tie object that is used to synchronize this CoordinareRect with other objects. |
void |
sync(Tie tie,
Tieable newest)
Part of the Tieable interface. |
int |
xToPixel(double x)
Convert an x-coodinate into a horizontal pixel coordinate. |
int |
yToPixel(double y)
Convert a y-coodinate 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)
Method Detail |
public double getXmin()
public double getXmax()
public double getYmin()
public double getYmax()
public int getGap()
public void setGap(int g)
public double[] getLimits()
getLimits
in interface Limits
public void setLimits(double xmin, double xmax, double ymin, double ymax)
xmin
- the minimum x-coordinate on the CoordinateRectxmax
- the maximum x-coordinate on the CoordinateRectymin
- the minimum y-coordinate on the CoordinateRectymax
- the maximum y-coordinate on the CoordinateRectpublic void setLimits(double[] d)
setLimits
in interface Limits
edu.hws.jcm.awt.Limits
A
- 4-element array containing the new xmin, xmax, ymin, and ymax.public void setOnChange(Controller c)
public Controller getOnChange()
public Value getValueObject(int which)
public long getSerialNumber()
getSerialNumber
in interface Tieable
public void setSyncWith(Tie tie)
public void sync(Tie tie, Tieable newest)
sync
in interface Tieable
public int getLeft()
public int getWidth()
public int getTop()
public int getHeight()
public double getPixelWidth()
public double getPixelHeight()
public int xToPixel(double x)
public int yToPixel(double y)
public double pixelToX(int h)
public double pixelToY(int y)
public double[] restore()
public void clearRestoreBuffer()
public void setRestoreBuffer()
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 zoompublic 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 zoompublic 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
public void add(Drawable d)
public void remove(Drawable d)
public 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)
public void draw(java.awt.Graphics g, int left, int top, int width, int height)
protected void doDraw(java.awt.Graphics g)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |