Class ShapeUtilities


  • public class ShapeUtilities
    extends Object
    Utility methods for Shape objects.
    Author:
    David Gilbert
    • Method Detail

      • clone

        public static Shape clone​(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​(Shape s1,
                                    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​(Line2D l1,
                                    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​(Ellipse2D e1,
                                    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​(Arc2D a1,
                                    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​(Polygon p1,
                                    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​(GeneralPath p1,
                                    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 Shape createTranslatedShape​(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 Shape createTranslatedShape​(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 Shape rotateShape​(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​(Graphics2D g2,
                                            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 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 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 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 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 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 Shape createLineRegion​(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 Point2D getPointInRectangle​(double x,
                                                  double y,
                                                  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:
        NullPointerException - if area is null.
      • contains

        public static boolean contains​(Rectangle2D rect1,
                                       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​(Rectangle2D rect1,
                                         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.