Class StrictBounds

  • All Implemented Interfaces:
    Serializable, Cloneable

    public class StrictBounds
    extends Object
    implements Serializable, Cloneable
    The StrictBounds class is a replacement for the Rectangle2D classes. This class uses integer mathematics instead of floating point values to achive a higher degree of stability.
    Author:
    Thomas Morgner
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      StrictBounds()
      DefaultConstructor.
      StrictBounds​(long x, long y, long width, long height)
      Creates a StrictBounds object with the given coordinates, width and height.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(long x, long y, long width, long height)
      Adds the given bounds to this bounds instance.
      void add​(StrictBounds bounds)
      Adds the given bounds to this bounds instance.
      Object clone()
      Returns a copy of this bounds object.
      boolean contains​(long x, long y)
      Checks whether this rectangle contains the given point.
      static boolean contains​(StrictBounds rect1, StrictBounds rect2)
      Checks whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).
      StrictBounds createIntersection​(StrictBounds bounds)
      Intersects this rectangle with the given bounds.
      StrictBounds createUnion​(StrictBounds bg)
      Creates a union from this and the given rectangle.
      boolean equals​(Object o)
      Checks whether the given object is a StrictBounds instance convering the same area as these bounds.
      long getHeight()
      Returns the height of the framing rectangle in micro points.
      StrictBounds getLockedInstance()
      Returns a copy of this bounds object which cannot be modified anymore.
      StrictBounds getUnlockedInstance()
      Returns a copy of this bounds object which can be modified later.
      long getWidth()
      Returns the width of the framing rectangle in micro points.
      long getX()
      Returns the X coordinate of the upper left corner of the framing rectangle in micro points.
      long getY()
      Returns the Y coordinate of the upper left corner of the framing rectangle in micro points.
      int hashCode()
      Computes the hashcode for this rectangle.
      static boolean intersects​(StrictBounds rect1, StrictBounds rect2)
      Checks whether the given rectangle1 fully contains rectangle 2 (even if rectangle 2 has a height or width of zero!).
      boolean isEmpty()
      Determines whether the RectangularShape is empty.
      boolean isLocked()
      Checks whether this bounds object is locked.
      void setRect​(long x, long y, long w, long h)
      Sets the location and size of this StrictBounds to the specified double values.
      void setRect​(StrictBounds bounds)
      Sets the location and size of this StrictBounds to the specified double values.
      String toString()
      Returns a string representation of these bounds.
    • Constructor Detail

      • StrictBounds

        public StrictBounds()
        DefaultConstructor.
      • StrictBounds

        public StrictBounds​(long x,
                            long y,
                            long width,
                            long height)
        Creates a StrictBounds object with the given coordinates, width and height.
        Parameters:
        x - the x-coordinate
        y - the y-coordinate
        width - the width of the rectangle
        height - the height of the rectangle
    • Method Detail

      • isLocked

        public boolean isLocked()
        Checks whether this bounds object is locked.
        Returns:
        true, if the bounds are locked and therefore immutable, false otherwise.
      • getLockedInstance

        public StrictBounds getLockedInstance()
        Returns a copy of this bounds object which cannot be modified anymore.
        Returns:
        a locked copy.
      • getUnlockedInstance

        public StrictBounds getUnlockedInstance()
        Returns a copy of this bounds object which can be modified later.
        Returns:
        an unlocked copy.
      • setRect

        public void setRect​(StrictBounds bounds)
        Sets the location and size of this StrictBounds to the specified double values.
        Parameters:
        bounds - the bounds from where to copy all properties StrictBounds
      • setRect

        public void setRect​(long x,
                            long y,
                            long w,
                            long h)
        Sets the location and size of this StrictBounds to the specified double values.
        Parameters:
        x - the coordinates to which to set the location of the upper left corner of this StrictBounds
        y - the coordinates to which to set the location of the upper left corner of this StrictBounds
        w - the value to use to set the width of this StrictBounds
        h - the value to use to set the height of this StrictBounds
      • getHeight

        public long getHeight()
        Returns the height of the framing rectangle in micro points.
        Returns:
        the height of the framing rectangle.
      • getWidth

        public long getWidth()
        Returns the width of the framing rectangle in micro points.
        Returns:
        the width of the framing rectangle.
      • getX

        public long getX()
        Returns the X coordinate of the upper left corner of the framing rectangle in micro points.
        Returns:
        the x coordinate of the upper left corner of the framing rectangle.
      • getY

        public long getY()
        Returns the Y coordinate of the upper left corner of the framing rectangle in micro points.
        Returns:
        the y coordinate of the upper left corner of the framing rectangle.
      • isEmpty

        public 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.
      • clone

        public Object clone()
        Returns a copy of this bounds object. This method will never throw a 'CloneNotSupportedException'.
        Overrides:
        clone in class Object
        Returns:
        the cloned instance.
      • contains

        public boolean contains​(long x,
                                long y)
        Checks whether this rectangle contains the given point.
        Parameters:
        x - the x-coordinate of the point.
        y - the y-coordinate of the point.
        Returns:
        true, if the point is inside or directly on the border of this rectangle, false otherwise.
      • intersects

        public static boolean intersects​(StrictBounds rect1,
                                         StrictBounds 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:
        true, if the rectangles intersect each other, false otherwise.
      • add

        public void add​(StrictBounds bounds)
        Adds the given bounds to this bounds instance. The resulting rectangle will fully contain both rectangles.
        Parameters:
        bounds - the rectangle that should be added.
      • add

        public void add​(long x,
                        long y,
                        long width,
                        long height)
        Adds the given bounds to this bounds instance. The resulting rectangle will fully contain both rectangles.
      • createIntersection

        public StrictBounds createIntersection​(StrictBounds bounds)
        Intersects this rectangle with the given bounds. The resulting rectangle will cover the space, that is occupied by both rectangles at the same time.
        Parameters:
        bounds - the other rectangle.
        Returns:
        the resulting intersection.
      • contains

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

        public boolean equals​(Object o)
        Checks whether the given object is a StrictBounds instance convering the same area as these bounds.
        Overrides:
        equals in class Object
        Parameters:
        o - the other object.
        Returns:
        true, if the other object is equal to this object, false otherwise.
      • hashCode

        public int hashCode()
        Computes the hashcode for this rectangle.
        Overrides:
        hashCode in class Object
        Returns:
        the computed hashcode.
      • toString

        public String toString()
        Returns a string representation of these bounds.
        Overrides:
        toString in class Object
        Returns:
        the string representing this object.
      • createUnion

        public StrictBounds createUnion​(StrictBounds bg)
        Creates a union from this and the given rectangle. This is similiar to calling 'add'. Calling this method does not modify the original and there are no guarantees, that the resulting rectangle has a positive width or height.
        Parameters:
        bg - the other rectangle.
        Returns:
        the resulting union rectangle.