edu.umd.cs.jazz.util
Class ZArea

java.lang.Object
  |
  +--edu.umd.cs.jazz.util.ZArea

public class ZArea
extends java.lang.Object
implements java.awt.Shape, java.lang.Cloneable

ZArea provides a very simple implementation of Area that only supports rectangle geometry. The goal is here to do implement what jazz needs in a faster way than Area can provide. We don't need the generality of Area, and can do the subset that we require faster.


Field Summary
protected  ZBounds bounds
           
 
Constructor Summary
ZArea()
          Constructs a new ZArea.
ZArea(java.awt.Rectangle rect)
          Constructs a new ZArea with a starting content of the passed in bounds.
ZArea(java.awt.geom.Rectangle2D rect)
          Constructs a new ZArea with a starting content of the passed in bounds.
ZArea(ZArea rhs)
          Constructs a new ZArea with a starting content of the passed in ZArea.
ZArea(ZBounds rhs)
          Constructs a new ZArea with a starting content of the passed in bounds.
 
Method Summary
 void add(java.awt.geom.Rectangle2D rhs)
          Set the ZArea to be the union of passed in rectangle and the current contents of the ZArea.
 void add(ZArea rhs)
          Set the ZArea to be the union of the passed in area and the current contents of the ZArea.
 void add(ZBounds rhs)
          Set the ZArea to be the union of passed in bounds and the current contents of the ZArea.
 java.lang.Object clone()
          Duplicates the current ZArea by using the copy constructor.
 boolean contains(double x, double y)
          Tests if the specified coordinates are inside the boundary of the Shape.
 boolean contains(double x, double y, double w, double h)
          Tests if the interior of the Shape entirely contains the specified rectangular area.
 boolean contains(java.awt.geom.Point2D p)
          Tests if a specified Point2D is inside the boundary of the Shape.
 boolean contains(java.awt.geom.Rectangle2D r)
          Tests if the interior of the Shape entirely contains the specified Rectangle2D.
 ZArea createTransformedArea(java.awt.geom.AffineTransform t)
          Creates a copy of this area, and transforms its geometry using the specified AffineTransform.
 java.awt.Rectangle getBounds()
          Return the current bounds of this ZArea
 java.awt.geom.Rectangle2D getBounds2D()
          Return the current bounds2D of this ZArea
 java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at)
          Returns an iterator object that iterates along the Shape boundary and provides access to the geometry of the Shape outline.
 java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at, double flatness)
          Returns an iterator object that iterates along the Shape boundary and provides access to a flattened view of the Shape outline geometry.
 boolean intersects(double x, double y, double w, double h)
          Tests if the interior of the ZArea intersects the interior of a specified rectangular area.
 boolean intersects(float x, float y, float w, float h)
          Tests if the interior of the ZArea intersects the interior of a specified rectangular area.
 boolean intersects(java.awt.geom.Rectangle2D r)
          Tests if the interior of the Shape intersects the interior of a specified Rectangle2D.
 boolean isEmpty()
          Determines if the area is empty.
 void reset()
          Removes all content from this ZArea and restores it to an empty area.
 java.lang.String toString()
          Generate a string that represents this object for debugging.
 void transform(java.awt.geom.AffineTransform t)
          Transforms the geometry of this ZArea using the specified AffineTransform.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

bounds

protected ZBounds bounds
Constructor Detail

ZArea

public ZArea()
Constructs a new ZArea.

ZArea

public ZArea(java.awt.Rectangle rect)
Constructs a new ZArea with a starting content of the passed in bounds.
Parameters:
rect - The rectangle to initialize the ZArea with.

ZArea

public ZArea(java.awt.geom.Rectangle2D rect)
Constructs a new ZArea with a starting content of the passed in bounds.
Parameters:
rect - The rectangle to initialize the ZArea with.

ZArea

public ZArea(ZBounds rhs)
Constructs a new ZArea with a starting content of the passed in bounds.
Parameters:
rect - The rectangle to initialize the ZArea with.

ZArea

public ZArea(ZArea rhs)
Constructs a new ZArea with a starting content of the passed in ZArea.
Parameters:
rect - The rectangle to initialize the ZArea with.
Method Detail

clone

public java.lang.Object clone()
Duplicates the current ZArea by using the copy constructor. See the copy constructor comments for complete information about what is duplicated.
Overrides:
clone in class java.lang.Object
See Also:
ZArea(ZArea)

isEmpty

public boolean isEmpty()
Determines if the area is empty.
Returns:
true if the area is empty, or false otherwise.

add

public void add(java.awt.geom.Rectangle2D rhs)
Set the ZArea to be the union of passed in rectangle and the current contents of the ZArea.
Parameters:
rhs - The rectangle to add to the ZArea.

add

public void add(ZBounds rhs)
Set the ZArea to be the union of passed in bounds and the current contents of the ZArea.
Parameters:
rhs - The bounds to add to the ZArea.

add

public void add(ZArea rhs)
Set the ZArea to be the union of the passed in area and the current contents of the ZArea.
Parameters:
rhs - The ZArea to add to the ZArea.

getBounds

public java.awt.Rectangle getBounds()
Return the current bounds of this ZArea
Specified by:
getBounds in interface java.awt.Shape

getBounds2D

public java.awt.geom.Rectangle2D getBounds2D()
Return the current bounds2D of this ZArea
Specified by:
getBounds2D in interface java.awt.Shape

reset

public void reset()
Removes all content from this ZArea and restores it to an empty area.

transform

public void transform(java.awt.geom.AffineTransform t)
Transforms the geometry of this ZArea using the specified AffineTransform.
Parameters:
t - The AffineTransform to apply to the ZAreas current contents

createTransformedArea

public ZArea createTransformedArea(java.awt.geom.AffineTransform t)
Creates a copy of this area, and transforms its geometry using the specified AffineTransform.
Parameters:
t - The AffineTransform to apply to the ZAreas current contents

contains

public boolean contains(double x,
                        double y)
Tests if the specified coordinates are inside the boundary of the Shape.
Specified by:
contains in interface java.awt.Shape
Parameters:
x, y - the specified coordinates
Returns:
true if the specified coordinates are inside the Shape boundary; false otherwise.

contains

public boolean contains(java.awt.geom.Point2D p)
Tests if a specified Point2D is inside the boundary of the Shape.
Specified by:
contains in interface java.awt.Shape
Parameters:
p - a specified Point2D
Returns:
true if the specified Point2D is inside the boundary of the Shape; false otherwise.

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
Tests if the interior of the Shape entirely contains the specified rectangular area. All coordinates that lie inside the rectangular area must lie within the Shape for the entire rectanglar area to be considered contained within the Shape.

This method might conservatively return false when:

This means that this method might return false even though the Shape contains the rectangular area. The Area class can be used to perform more accurate computations of geometric intersection for any Shape object if a more precise answer is required.
Specified by:
contains in interface java.awt.Shape
Parameters:
x, y - the coordinates of the specified rectangular area
w - the width of the specified rectangular area
h - the height of the specified rectangular area
Returns:
true if the interior of the Shape entirely contains the specified rectangular area; false otherwise or, if the Shape contains the rectangular area and the intersects method returns true and the containment calculations would be too expensive to perform.
See Also:
Area, intersects(float, float, float, float)

contains

public boolean contains(java.awt.geom.Rectangle2D r)
Tests if the interior of the Shape entirely contains the specified Rectangle2D. This method might conservatively return false when: This means that this method might return false even though the Shape contains the Rectangle2D. The Area class can be used to perform more accurate computations of geometric intersection for any Shape object if a more precise answer is required.
Specified by:
contains in interface java.awt.Shape
Parameters:
r - The specified Rectangle2D
Returns:
true if the interior of the Shape entirely contains the Rectangle2D; false otherwise or, if the Shape contains the Rectangle2D and the intersects method returns true and the containment calculations would be too expensive to perform.
See Also:
contains(double, double, double, double)

intersects

public boolean intersects(float x,
                          float y,
                          float w,
                          float h)
Tests if the interior of the ZArea intersects the interior of a specified rectangular area. The rectangular area is considered to intersect the ZArea if any point is contained in both the interior of the ZArea and the specified rectangular area.
Parameters:
x, y - the coordinates of the specified rectangular area
w - the width of the specified rectangular area
h - the height of the specified rectangular area
Returns:
true if the interior of the Shape and the interior of the rectangular area intersect, or are both highly likely to intersect and intersection calculations would be too expensive to perform; false otherwise.

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
Tests if the interior of the ZArea intersects the interior of a specified rectangular area. The rectangular area is considered to intersect the ZArea if any point is contained in both the interior of the ZArea and the specified rectangular area.
Specified by:
intersects in interface java.awt.Shape
Parameters:
x, y - the coordinates of the specified rectangular area
w - the width of the specified rectangular area
h - the height of the specified rectangular area
Returns:
true if the interior of the Shape and the interior of the rectangular area intersect, or are both highly likely to intersect and intersection calculations would be too expensive to perform; false otherwise.

intersects

public boolean intersects(java.awt.geom.Rectangle2D r)
Tests if the interior of the Shape intersects the interior of a specified Rectangle2D. This method might conservatively return true when: This means that this method might return true even though the Rectangle2D does not intersect the Shape.
Specified by:
intersects in interface java.awt.Shape
Parameters:
r - the specified Rectangle2D
Returns:
true if the interior of the Shape and the interior of the specified Rectangle2D intersect, or are both highly likely to intersect and intersection calculations would be too expensive to perform; false otherwise.
See Also:
intersects(double, double, double, double)

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at)
Returns an iterator object that iterates along the Shape boundary and provides access to the geometry of the Shape outline. If an optional AffineTransform is specified, the coordinates returned in the iteration are transformed accordingly.

Each call to this method returns a fresh PathIterator object that traverses the geometry of the Shape object independently from any other PathIterator objects in use at the same time.

It is recommended, but not guaranteed, that objects implementing the Shape interface isolate iterations that are in process from any changes that might occur to the original object's geometry during such iterations.

Before using a particular implementation of the Shape interface in more than one thread simultaneously, refer to its documentation to verify that it guarantees that iterations are isolated from modifications.

Specified by:
getPathIterator in interface java.awt.Shape
Parameters:
at - an optional AffineTransform to be applied to the coordinates as they are returned in the iteration, or null if untransformed coordinates are desired
Returns:
a new PathIterator object, which independently traverses the geometry of the Shape.

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at,
                                                  double flatness)
Returns an iterator object that iterates along the Shape boundary and provides access to a flattened view of the Shape outline geometry.

Only SEG_MOVETO, SEG_LINETO, and SEG_CLOSE point types are returned by the iterator.

If an optional AffineTransform is specified, the coordinates returned in the iteration are transformed accordingly.

The amount of subdivision of the curved segments is controlled by the flatness parameter, which specifies the maximum distance that any point on the unflattened transformed curve can deviate from the returned flattened path segments. Note that a limit on the accuracy of the flattened path might be silently imposed, causing very small flattening parameters to be treated as larger values. This limit, if there is one, is defined by the particular implementation that is used.

Each call to this method returns a fresh PathIterator object that traverses the Shape object geometry independently from any other PathIterator objects in use at the same time.

It is recommended, but not guaranteed, that objects implementing the Shape interface isolate iterations that are in process from any changes that might occur to the original object's geometry during such iterations.

Before using a particular implementation of this interface in more than one thread simultaneously, refer to its documentation to verify that it guarantees that iterations are isolated from modifications.

Specified by:
getPathIterator in interface java.awt.Shape
Parameters:
at - an optional AffineTransform to be applied to the coordinates as they are returned in the iteration, or null if untransformed coordinates are desired
flatness - the maximum distance that the line segments used to approximate the curved segments are allowed to deviate from any point on the original curve
Returns:
a new PathIterator that independently traverses the Shape geometry.

toString

public java.lang.String toString()
Generate a string that represents this object for debugging.
Returns:
the string that represents this object for debugging
Overrides:
toString in class java.lang.Object