java.awt.geom

## Class RectangularShape

- java.lang.Object
- - java.awt.geom.RectangularShape

All Implemented Interfaces:
  Shape, Cloneable

Direct Known Subclasses:
  Arc2D, Ellipse2D, Rectangle2D, RoundRectangle2D

    public abstract class RectangularShape
    extends Object
    implements Shape, Cloneable

`RectangularShape` is the base class for a number of `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.

Since:
  1.2

### Constructor Summary

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

### Method Summary

Methods
`Object` `clone()` Creates a new object of the same class and with the same contents as this object.
`boolean` `contains(Point2D p)` Tests if a specified `Point2D` is inside the boundary of the `Shape`.
`boolean` `contains(Rectangle2D r)` Tests if the interior of the `Shape` entirely contains the specified `Rectangle2D`.
`Rectangle` `getBounds()` Returns an integer `Rectangle` that completely encloses the `Shape`.
`double` `getCenterX()` Returns the X coordinate of the center of the framing rectangle of the `Shape` in `double` precision.
`double` `getCenterY()` Returns the Y coordinate of the center of the framing rectangle of the `Shape` in `double` precision.
`Rectangle2D` `getFrame()` Returns the framing `Rectangle2D` that defines the overall shape of this object.
`abstract double` `getHeight()` Returns the height of the framing rectangle in `double` precision.
`double` `getMaxX()` Returns the largest X coordinate of the framing rectangle of the `Shape` in `double` precision.
`double` `getMaxY()` Returns the largest Y coordinate of the framing rectangle of the `Shape` in `double` precision.
`double` `getMinX()` Returns the smallest X coordinate of the framing rectangle of the `Shape` in `double` precision.
`double` `getMinY()` Returns the smallest Y coordinate of the framing rectangle of the `Shape` in `double` precision.
`PathIterator` `getPathIterator(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.
`abstract double` `getWidth()` Returns the width of the framing rectangle in `double` precision.
`abstract double` `getX()` Returns the X coordinate of the upper-left corner of the framing rectangle in `double` precision.
`abstract double` `getY()` Returns the Y coordinate of the upper-left corner of the framing rectangle in `double` precision.
`boolean` `intersects(Rectangle2D r)` Tests if the interior of the `Shape` intersects the interior of a specified `Rectangle2D`.
`abstract boolean` `isEmpty()` Determines whether the `RectangularShape` is empty.
`abstract void` `setFrame(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.
`void` `setFrame(Point2D loc, Dimension2D size)` Sets the location and size of the framing rectangle of this `Shape` to the specified `Point2D` and `Dimension2D`, respectively.
`void` `setFrame(Rectangle2D r)` Sets the framing rectangle of this `Shape` to be the specified `Rectangle2D`.
`void` `setFrameFromCenter(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.
`void` `setFrameFromCenter(Point2D center, Point2D corner)` Sets the framing rectangle of this `Shape` based on a specified center `Point2D` and corner `Point2D`.
`void` `setFrameFromDiagonal(double x1, double y1, double x2, double y2)` Sets the diagonal of the framing rectangle of this `Shape` based on the two specified coordinates.
`void` `setFrameFromDiagonal(Point2D p1, Point2D p2)` Sets the diagonal of the framing rectangle of this `Shape` based on two specified `Point2D` objects.

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.awt.Shape

`contains, contains, getBounds2D, getPathIterator, intersects`

### Constructor Detail

#### RectangularShape

    protected RectangularShape()

This is an abstract class that cannot be instantiated directly.

Since:
  1.2
See Also:
  `Arc2D`, `Ellipse2D`, `Rectangle2D`, `RoundRectangle2D`

### Method Detail

#### getX

    public abstract double getX()

Returns the X coordinate of the upper-left corner of the framing rectangle in `double` precision.

Returns:
  the X coordinate of the upper-left corner of the framing rectangle.
Since:
  1.2

#### getY

    public abstract double getY()

Returns the Y coordinate of the upper-left corner of the framing rectangle in `double` precision.

Returns:
  the Y coordinate of the upper-left corner of the framing rectangle.
Since:
  1.2

#### getWidth

    public abstract double getWidth()

Returns the width of the framing rectangle in `double` precision.

Returns:
  the width of the framing rectangle.
Since:
  1.2

#### getHeight

    public abstract double getHeight()

Returns the height of the framing rectangle in `double` precision.

Returns:
  the height of the framing rectangle.
Since:
  1.2

#### getMinX

    public double getMinX()

Returns the smallest X coordinate of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the smallest X coordinate of the framing rectangle of the `Shape`.
Since:
  1.2

#### getMinY

    public double getMinY()

Returns the smallest Y coordinate of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the smallest Y coordinate of the framing rectangle of the `Shape`.
Since:
  1.2

#### getMaxX

    public double getMaxX()

Returns the largest X coordinate of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the largest X coordinate of the framing rectangle of the `Shape`.
Since:
  1.2

#### getMaxY

    public double getMaxY()

Returns the largest Y coordinate of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the largest Y coordinate of the framing rectangle of the `Shape`.
Since:
  1.2

#### getCenterX

    public double getCenterX()

Returns the X coordinate of the center of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the X coordinate of the center of the framing rectangle of the `Shape`.
Since:
  1.2

#### getCenterY

    public double getCenterY()

Returns the Y coordinate of the center of the framing rectangle of the `Shape` in `double` precision.

Returns:
  the Y coordinate of the center of the framing rectangle of the `Shape`.
Since:
  1.2

#### getFrame

    public Rectangle2D getFrame()

Returns the framing `Rectangle2D` that defines the overall shape of this object.

Returns:
  a `Rectangle2D`, specified in `double` coordinates.
Since:
  1.2
See Also:
  `setFrame(double, double, double, double)`, `setFrame(Point2D, Dimension2D)`, `setFrame(Rectangle2D)`

#### isEmpty

    public abstract boolean isEmpty()

Determines whether the `RectangularShape` is empty. When the `RectangularShape` is empty, it encloses no area.

Returns:
  `true` if the `RectangularShape` is empty; `false` otherwise.
Since:
  1.2

#### setFrame

    public abstract void setFrame(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.

Parameters:
  `x` - the X coordinate of the upper-left corner of the specified rectangular shape
  `y` - the Y coordinate of the upper-left corner of the specified rectangular shape
  `w` - the width of the specified rectangular shape
  `h` - the height of the specified rectangular shape
Since:
  1.2
See Also:
  `getFrame()`

#### setFrame

    public void setFrame(Point2D loc,
                Dimension2D size)

Sets the location and size of the framing rectangle of this `Shape` to the specified `Point2D` and `Dimension2D`, respectively. The framing rectangle is used by the subclasses of `RectangularShape` to define their geometry.

Parameters:
  `loc` - the specified `Point2D`
  `size` - the specified `Dimension2D`
Since:
  1.2
See Also:
  `getFrame()`

#### setFrame

    public void setFrame(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.

Parameters:
  `r` - the specified `Rectangle2D`
Since:
  1.2
See Also:
  `getFrame()`

#### setFrameFromDiagonal

    public void setFrameFromDiagonal(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.

Parameters:
  `x1` - the X coordinate of the start point of the specified diagonal
  `y1` - the Y coordinate of the start point of the specified diagonal
  `x2` - the X coordinate of the end point of the specified diagonal
  `y2` - the Y coordinate of the end point of the specified diagonal
Since:
  1.2

#### setFrameFromDiagonal

    public void setFrameFromDiagonal(Point2D p1,
                            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.

Parameters:
  `p1` - the start `Point2D` of the specified diagonal
  `p2` - the end `Point2D` of the specified diagonal
Since:
  1.2

#### setFrameFromCenter

    public void setFrameFromCenter(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.

Parameters:
  `centerX` - the X coordinate of the specified center point
  `centerY` - the Y coordinate of the specified center point
  `cornerX` - the X coordinate of the specified corner point
  `cornerY` - the Y coordinate of the specified corner point
Since:
  1.2

#### setFrameFromCenter

    public void setFrameFromCenter(Point2D center,
                          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.

Parameters:
  `center` - the specified center `Point2D`
  `corner` - the specified corner `Point2D`
Since:
  1.2

#### contains

    public boolean contains(Point2D p)

Tests if a specified `Point2D` is inside the boundary of the `Shape`.

Specified by:
  `contains` in interface `Shape`
Parameters:
  `p` - the specified `Point2D` to be tested
Returns:
  `true` if the specified `Point2D` is inside the boundary of the `Shape`; `false` otherwise.
Since:
  1.2

#### intersects

    public boolean intersects(Rectangle2D r)

Tests if the interior of the `Shape` intersects the interior of a specified `Rectangle2D`. The `Shape.intersects()` method allows a `Shape` implementation to conservatively return `true` when:

- there is a high probability that the `Rectangle2D` and the `Shape` intersect, but
- the calculations to accurately determine this intersection are prohibitively expensive.

This means that for some `Shapes` this method might return `true` even though the `Rectangle2D` does not intersect the `Shape`. The `Area` class performs more accurate computations of geometric intersection than most `Shape` objects and therefore can be used if a more precise answer is required.

Specified by:
  `intersects` in interface `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.
Since:
  1.2
See Also:
  `Shape.intersects(double, double, double, double)`

#### contains

    public boolean contains(Rectangle2D r)

Tests if the interior of the `Shape` entirely contains the specified `Rectangle2D`. The `Shape.contains()` method allows a `Shape` implementation to conservatively return `false` when:

- the `intersect` method returns `true` and
- the calculations to determine whether or not the `Shape` entirely contains the `Rectangle2D` are prohibitively expensive.

This means that for some `Shapes` this method might return `false` even though the `Shape` contains the `Rectangle2D`. The `Area` class performs more accurate geometric computations than most `Shape` objects and therefore can be used if a more precise answer is required.

Specified by:
  `contains` in interface `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.
Since:
  1.2
See Also:
  `Shape.contains(double, double, double, double)`

#### getBounds

    public Rectangle getBounds()

Returns an integer `Rectangle` that completely encloses the `Shape`. Note that there is no guarantee that the returned `Rectangle` is the smallest bounding box that encloses the `Shape`, only that the `Shape` lies entirely within the indicated `Rectangle`. The returned `Rectangle` might also fail to completely enclose the `Shape` if the `Shape` overflows the limited range of the integer data type. The `getBounds2D` method generally returns a tighter bounding box due to its greater flexibility in representation.

Specified by:
  `getBounds` in interface `Shape`
Returns:
  an integer `Rectangle` that completely encloses the `Shape`.
Since:
  1.2
See Also:
  `Shape.getBounds2D()`

#### getPathIterator

    public PathIterator getPathIterator(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 `AffineTransform` can be specified so that the coordinates returned in the iteration are transformed accordingly.

Specified by:
  `getPathIterator` in interface `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 `PathIterator` object that provides access to the `Shape` object's flattened geometry.
Since:
  1.2

#### clone

    public Object clone()

Creates a new object of the same class and with the same contents as this object.

Overrides:
  `clone` in class `Object`
Returns:
  a clone of this instance.
Throws:
  `OutOfMemoryError` - if there is not enough memory.
Since:
  1.2
See Also:
  `Cloneable`

Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved.