org.jfree.util
Class ShapeUtilities

java.lang.Object
  extended by org.jfree.util.ShapeUtilities

public class ShapeUtilities
extends java.lang.Object

Utility methods for Shape objects.

Author:
David Gilbert

Method Summary
static java.awt.Shape clone(java.awt.Shape shape)
          Returns a clone of the specified shape, or null.
static boolean contains(java.awt.geom.Rectangle2D rect1, java.awt.geom.Rectangle2D rect2)
          Checks, whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).
static java.awt.Shape createDiagonalCross(float l, float t)
          Creates a diagonal cross shape.
static java.awt.Shape createDiamond(float s)
          Creates a diamond shape.
static java.awt.Shape createDownTriangle(float s)
          Creates a triangle shape that points downwards.
static java.awt.Shape createLineRegion(java.awt.geom.Line2D line, float width)
          Creates a region surrounding a line segment by 'widening' the line segment.
static java.awt.Shape createRegularCross(float l, float t)
          Creates a diagonal cross shape.
static java.awt.Shape createTranslatedShape(java.awt.Shape shape, double transX, double transY)
          Creates and returns a translated shape.
static java.awt.Shape createTranslatedShape(java.awt.Shape shape, RectangleAnchor anchor, double locationX, double locationY)
          Translates a shape to a new location such that the anchor point (relative to the rectangular bounds of the shape) aligns with the specified (x, y) coordinate in Java2D space.
static java.awt.Shape createUpTriangle(float s)
          Creates a triangle shape that points upwards.
static void drawRotatedShape(java.awt.Graphics2D g2, java.awt.Shape shape, double angle, float x, float y)
          Draws a shape with the specified rotation about (x, y).
static boolean equal(java.awt.geom.Arc2D a1, java.awt.geom.Arc2D a2)
          Compares two arcs and returns true if they are equal or both null.
static boolean equal(java.awt.geom.Ellipse2D e1, java.awt.geom.Ellipse2D e2)
          Compares two ellipses and returns true if they are equal or both null.
static boolean equal(java.awt.geom.GeneralPath p1, java.awt.geom.GeneralPath p2)
          Tests two polygons for equality.
static boolean equal(java.awt.geom.Line2D l1, java.awt.geom.Line2D l2)
          Compares two lines are returns true if they are equal or both null.
static boolean equal(java.awt.Polygon p1, java.awt.Polygon p2)
          Tests two polygons for equality.
static boolean equal(java.awt.Shape s1, java.awt.Shape s2)
          Tests two shapes for equality.
static java.awt.geom.Point2D getPointInRectangle(double x, double y, java.awt.geom.Rectangle2D area)
          Returns a point based on (x, y) but constrained to be within the bounds of a given rectangle.
static boolean intersects(java.awt.geom.Rectangle2D rect1, java.awt.geom.Rectangle2D rect2)
          Checks, whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).
static java.awt.Shape rotateShape(java.awt.Shape base, double angle, float x, float y)
          Rotates a shape about the specified coordinates.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

clone

public static java.awt.Shape clone(java.awt.Shape shape)
Returns a clone of the specified shape, or null. At the current time, this method supports cloning for instances of Line2D, RectangularShape, Area and GeneralPath.

RectangularShape includes Arc2D, Ellipse2D, Rectangle2D, RoundRectangle2D.

Parameters:
shape - the shape to clone (null permitted, returns null).
Returns:
A clone or null.

equal

public static boolean equal(java.awt.Shape s1,
                            java.awt.Shape s2)
Tests two shapes for equality. If both shapes are null, this method will return true.

In the current implementation, the following shapes are supported: Ellipse2D, Line2D and Rectangle2D (implicit).

Parameters:
s1 - the first shape (null permitted).
s2 - the second shape (null permitted).
Returns:
A boolean.

equal

public static boolean equal(java.awt.geom.Line2D l1,
                            java.awt.geom.Line2D l2)
Compares two lines are returns true if they are equal or both null.

Parameters:
l1 - the first line (null permitted).
l2 - the second line (null permitted).
Returns:
A boolean.

equal

public static boolean equal(java.awt.geom.Ellipse2D e1,
                            java.awt.geom.Ellipse2D e2)
Compares two ellipses and returns true if they are equal or both null.

Parameters:
e1 - the first ellipse (null permitted).
e2 - the second ellipse (null permitted).
Returns:
A boolean.

equal

public static boolean equal(java.awt.geom.Arc2D a1,
                            java.awt.geom.Arc2D a2)
Compares two arcs and returns true if they are equal or both null.

Parameters:
a1 - the first arc (null permitted).
a2 - the second arc (null permitted).
Returns:
A boolean.

equal

public static boolean equal(java.awt.Polygon p1,
                            java.awt.Polygon p2)
Tests two polygons for equality. If both are null this method returns true.

Parameters:
p1 - polygon 1 (null permitted).
p2 - polygon 2 (null permitted).
Returns:
A boolean.

equal

public static boolean equal(java.awt.geom.GeneralPath p1,
                            java.awt.geom.GeneralPath p2)
Tests two polygons for equality. If both are null this method returns true.

Parameters:
p1 - path 1 (null permitted).
p2 - path 2 (null permitted).
Returns:
A boolean.

createTranslatedShape

public static java.awt.Shape createTranslatedShape(java.awt.Shape shape,
                                                   double transX,
                                                   double transY)
Creates and returns a translated shape.

Parameters:
shape - the shape (null not permitted).
transX - the x translation (in Java2D space).
transY - the y translation (in Java2D space).
Returns:
The translated shape.

createTranslatedShape

public static java.awt.Shape createTranslatedShape(java.awt.Shape shape,
                                                   RectangleAnchor anchor,
                                                   double locationX,
                                                   double locationY)
Translates a shape to a new location such that the anchor point (relative to the rectangular bounds of the shape) aligns with the specified (x, y) coordinate in Java2D space.

Parameters:
shape - the shape (null not permitted).
anchor - the anchor (null not permitted).
locationX - the x-coordinate (in Java2D space).
locationY - the y-coordinate (in Java2D space).
Returns:
A new and translated shape.

rotateShape

public static java.awt.Shape rotateShape(java.awt.Shape base,
                                         double angle,
                                         float x,
                                         float y)
Rotates a shape about the specified coordinates.

Parameters:
base - the shape (null permitted, returns null).
angle - the angle (in radians).
x - the x coordinate for the rotation point (in Java2D space).
y - the y coordinate for the rotation point (in Java2D space).
Returns:
the rotated shape.

drawRotatedShape

public static void drawRotatedShape(java.awt.Graphics2D g2,
                                    java.awt.Shape shape,
                                    double angle,
                                    float x,
                                    float y)
Draws a shape with the specified rotation about (x, y).

Parameters:
g2 - the graphics device (null not permitted).
shape - the shape (null not permitted).
angle - the angle (in radians).
x - the x coordinate for the rotation point.
y - the y coordinate for the rotation point.

createDiagonalCross

public static java.awt.Shape createDiagonalCross(float l,
                                                 float t)
Creates a diagonal cross shape.

Parameters:
l - the length of each 'arm'.
t - the thickness.
Returns:
A diagonal cross shape.

createRegularCross

public static java.awt.Shape createRegularCross(float l,
                                                float t)
Creates a diagonal cross shape.

Parameters:
l - the length of each 'arm'.
t - the thickness.
Returns:
A diagonal cross shape.

createDiamond

public static java.awt.Shape createDiamond(float s)
Creates a diamond shape.

Parameters:
s - the size factor (equal to half the height of the diamond).
Returns:
A diamond shape.

createUpTriangle

public static java.awt.Shape createUpTriangle(float s)
Creates a triangle shape that points upwards.

Parameters:
s - the size factor (equal to half the height of the triangle).
Returns:
A triangle shape.

createDownTriangle

public static java.awt.Shape createDownTriangle(float s)
Creates a triangle shape that points downwards.

Parameters:
s - the size factor (equal to half the height of the triangle).
Returns:
A triangle shape.

createLineRegion

public static java.awt.Shape createLineRegion(java.awt.geom.Line2D line,
                                              float width)
Creates a region surrounding a line segment by 'widening' the line segment. A typical use for this method is the creation of a 'clickable' region for a line that is displayed on-screen.

Parameters:
line - the line (null not permitted).
width - the width of the region.
Returns:
A region that surrounds the line.

getPointInRectangle

public static java.awt.geom.Point2D getPointInRectangle(double x,
                                                        double y,
                                                        java.awt.geom.Rectangle2D area)
Returns a point based on (x, y) but constrained to be within the bounds of a given rectangle.

Parameters:
x - the x-coordinate.
y - the y-coordinate.
area - the constraining rectangle (null not permitted).
Returns:
A point within the rectangle.
Throws:
java.lang.NullPointerException - if area is null.

contains

public static boolean contains(java.awt.geom.Rectangle2D rect1,
                               java.awt.geom.Rectangle2D rect2)
Checks, whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).

Parameters:
rect1 - the first rectangle.
rect2 - the second rectangle.
Returns:
A boolean.

intersects

public static boolean intersects(java.awt.geom.Rectangle2D rect1,
                                 java.awt.geom.Rectangle2D rect2)
Checks, whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).

Parameters:
rect1 - the first rectangle.
rect2 - the second rectangle.
Returns:
A boolean.