FileDocCategorySizeDatePackage
RectangularShape.javaAPI DocJava SE 6 API12607Tue Jun 10 00:25:26 BST 2008java.awt.geom

RectangularShape

public abstract class RectangularShape extends Object implements Shape, Cloneable
RectangularShape is the base class for a number of {@link Shape} objects whose geometry is defined by a rectangular frame. This class does not directly specify any specific geometry by itself, but merely provides manipulation methods inherited by a whole category of Shape objects. The manipulation methods provided by this class can be used to query and modify the rectangular frame, which provides a reference for the subclasses to define their geometry.
version
1.20, 02/24/06
author
Jim Graham
since
1.2

Fields Summary
Constructors Summary
protected RectangularShape()
This is an abstract class that cannot be instantiated directly.

see
Arc2D
see
Ellipse2D
see
Rectangle2D
see
RoundRectangle2D
since
1.2

    
Methods Summary
public java.lang.Objectclone()
Creates a new object of the same class and with the same contents as this object.

return
a clone of this instance.
exception
OutOfMemoryError if there is not enough memory.
see
java.lang.Cloneable
since
1.2

	try {
	    return super.clone();
	} catch (CloneNotSupportedException e) {
	    // this shouldn't happen, since we are Cloneable
	    throw new InternalError();
	}
    
public booleancontains(java.awt.geom.Point2D p)
{@inheritDoc}

since
1.2

	return contains(p.getX(), p.getY());
    
public booleancontains(java.awt.geom.Rectangle2D r)
{@inheritDoc}

since
1.2

	return contains(r.getX(), r.getY(), r.getWidth(), r.getHeight());
    
public java.awt.RectanglegetBounds()
{@inheritDoc}

since
1.2

	double width = getWidth();
	double height = getHeight();
	if (width < 0 || height < 0) {
	    return new Rectangle();
	}
	double x = getX();
	double y = getY();
	double x1 = Math.floor(x);
	double y1 = Math.floor(y);
	double x2 = Math.ceil(x + width);
	double y2 = Math.ceil(y + height);
	return new Rectangle((int) x1, (int) y1,
				      (int) (x2 - x1), (int) (y2 - y1));
    
public doublegetCenterX()
Returns the X coordinate of the center of the framing rectangle of the Shape in double precision.

return
the X coordinate of the center of the framing rectangle of the Shape.
since
1.2

	return getX() + getWidth() / 2.0;
    
public doublegetCenterY()
Returns the Y coordinate of the center of the framing rectangle of the Shape in double precision.

return
the Y coordinate of the center of the framing rectangle of the Shape.
since
1.2

	return getY() + getHeight() / 2.0;
    
public java.awt.geom.Rectangle2DgetFrame()
Returns the framing {@link Rectangle2D} that defines the overall shape of this object.

return
a Rectangle2D, specified in double coordinates.
see
#setFrame(double, double, double, double)
see
#setFrame(Point2D, Dimension2D)
see
#setFrame(Rectangle2D)
since
1.2

	return new Rectangle2D.Double(getX(), getY(), getWidth(), getHeight());
    
public abstract doublegetHeight()
Returns the height of the framing rectangle in double precision.

return
the height of the framing rectangle.
since
1.2

public doublegetMaxX()
Returns the largest X coordinate of the framing rectangle of the Shape in double precision.

return
the largest X coordinate of the framing rectangle of the Shape.
since
1.2

	return getX() + getWidth();
    
public doublegetMaxY()
Returns the largest Y coordinate of the framing rectangle of the Shape in double precision.

return
the largest Y coordinate of the framing rectangle of the Shape.
since
1.2

	return getY() + getHeight();
    
public doublegetMinX()
Returns the smallest X coordinate of the framing rectangle of the Shape in double precision.

return
the smallest X coordinate of the framing rectangle of the Shape.
since
1.2

	return getX();
    
public doublegetMinY()
Returns the smallest Y coordinate of the framing rectangle of the Shape in double precision.

return
the smallest Y coordinate of the framing rectangle of the Shape.
since
1.2

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

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

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. An optional {@link AffineTransform} can be specified so that the coordinates returned in the iteration are transformed accordingly.

param
at an optional AffineTransform to be applied to the coordinates as they are returned in the iteration, or null if untransformed coordinates are desired.
param
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
return
a PathIterator object that provides access to the Shape object's flattened geometry.
since
1.2

	return new FlatteningPathIterator(getPathIterator(at), flatness);
    
public abstract doublegetWidth()
Returns the width of the framing rectangle in double precision.

return
the width of the framing rectangle.
since
1.2

public abstract doublegetX()
Returns the X coordinate of the upper-left corner of the framing rectangle in double precision.

return
the X coordinate of the upper-left corner of the framing rectangle.
since
1.2

public abstract doublegetY()
Returns the Y coordinate of the upper-left corner of the framing rectangle in double precision.

return
the Y coordinate of the upper-left corner of the framing rectangle.
since
1.2

public booleanintersects(java.awt.geom.Rectangle2D r)
{@inheritDoc}

since
1.2

	return intersects(r.getX(), r.getY(), r.getWidth(), r.getHeight());
    
public abstract booleanisEmpty()
Determines whether the RectangularShape is empty. When the RectangularShape is empty, it encloses no area.

return
true if the RectangularShape is empty; false otherwise.
since
1.2

public abstract voidsetFrame(double x, double y, double w, double h)
Sets the location and size of the framing rectangle of this Shape to the specified rectangular values.

param
x the X coordinate of the upper-left corner of the specified rectangular shape
param
y the Y coordinate of the upper-left corner of the specified rectangular shape
param
w the width of the specified rectangular shape
param
h the height of the specified rectangular shape
see
#getFrame
since
1.2

public voidsetFrame(java.awt.geom.Point2D loc, java.awt.geom.Dimension2D size)
Sets the location and size of the framing rectangle of this Shape to the specified {@link Point2D} and {@link Dimension2D}, respectively. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
loc the specified Point2D
param
size the specified Dimension2D
see
#getFrame
since
1.2

	setFrame(loc.getX(), loc.getY(), size.getWidth(), size.getHeight());
    
public voidsetFrame(java.awt.geom.Rectangle2D r)
Sets the framing rectangle of this Shape to be the specified Rectangle2D. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
r the specified Rectangle2D
see
#getFrame
since
1.2

	setFrame(r.getX(), r.getY(), r.getWidth(), r.getHeight());
    
public voidsetFrameFromCenter(double centerX, double centerY, double cornerX, double cornerY)
Sets the framing rectangle of this Shape based on the specified center point coordinates and corner point coordinates. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
centerX the X coordinate of the specified center point
param
centerY the Y coordinate of the specified center point
param
cornerX the X coordinate of the specified corner point
param
cornerY the Y coordinate of the specified corner point
since
1.2

	double halfW = Math.abs(cornerX - centerX);
	double halfH = Math.abs(cornerY - centerY);
	setFrame(centerX - halfW, centerY - halfH, halfW * 2.0, halfH * 2.0);
    
public voidsetFrameFromCenter(java.awt.geom.Point2D center, java.awt.geom.Point2D corner)
Sets the framing rectangle of this Shape based on a specified center Point2D and corner Point2D. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
center the specified center Point2D
param
corner the specified corner Point2D
since
1.2

	setFrameFromCenter(center.getX(), center.getY(),
			   corner.getX(), corner.getY());
    
public voidsetFrameFromDiagonal(double x1, double y1, double x2, double y2)
Sets the diagonal of the framing rectangle of this Shape based on the two specified coordinates. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
x1 the X coordinate of the start point of the specified diagonal
param
y1 the Y coordinate of the start point of the specified diagonal
param
x2 the X coordinate of the end point of the specified diagonal
param
y2 the Y coordinate of the end point of the specified diagonal
since
1.2

	if (x2 < x1) {
	    double t = x1;
	    x1 = x2;
	    x2 = t;
	}
	if (y2 < y1) {
	    double t = y1;
	    y1 = y2;
	    y2 = t;
	}
	setFrame(x1, y1, x2 - x1, y2 - y1);
    
public voidsetFrameFromDiagonal(java.awt.geom.Point2D p1, java.awt.geom.Point2D p2)
Sets the diagonal of the framing rectangle of this Shape based on two specified Point2D objects. The framing rectangle is used by the subclasses of RectangularShape to define their geometry.

param
p1 the start Point2D of the specified diagonal
param
p2 the end Point2D of the specified diagonal
since
1.2

	setFrameFromDiagonal(p1.getX(), p1.getY(), p2.getX(), p2.getY());