Class RectListManager

java.lang.Object
io.sf.carte.echosvg.ext.awt.geom.RectListManager
All Implemented Interfaces:
Iterable<Rectangle>, Collection<Rectangle>

public class RectListManager extends Object implements Collection<Rectangle>
RectListManager is a class to manage a list of rectangular regions. This class contains methods to add new rectangles to the List, to merge rectangles in the list (based on a cost function), and functions to subract one RectListManager from another. The main purpose of this class is to manage dirty regions on a display (for this reason it uses Rectangle not Rectangle2D).
  • Field Details

    • comparator

      public static Comparator<Rectangle> comparator
      The comparator used to sort the elements of this List. Sorts on x value of Rectangle.
  • Constructor Details

    • RectListManager

      public RectListManager(Collection<?> rects)
      Construct a RectListManager from a Collection of Rectangles
      Parameters:
      rects - Collection that must only contain rectangles.
    • RectListManager

      public RectListManager(Rectangle[] rects)
      Construct a RectListManager from an Array of Rectangles
      Parameters:
      rects - Array of Rectangles, must not contain any null entries.
    • RectListManager

      public RectListManager(Rectangle[] rects, int off, int sz)
      Construct a RectListManager from an Array of Rectangles
      Parameters:
      rects - Array of Rectangles, must not contain any null entries in the range [off, off+sz-1].
      off - The offset to start copying from in rects.
      sz - The number of entries to copy from rects.
    • RectListManager

      public RectListManager(RectListManager rlm)
      Construct a RectListManager from another RectListManager (data is copied).
      Parameters:
      rlm - RectListManager to copy.
    • RectListManager

      public RectListManager(Rectangle rect)
      Construct a RectListManager with one rectangle
      Parameters:
      rect - The rectangle to put in this rlm.
    • RectListManager

      public RectListManager()
      Construct an initially empty RectListManager.
    • RectListManager

      public RectListManager(int capacity)
      Construct an initially empty RectListManager, with initial capacity.
      Parameters:
      capacity - The inital capacity for the list. Setting this appropriately can save reallocations.
  • Method Details

    • dump

      public void dump()
    • getBounds

      public Rectangle getBounds()
    • clone

      public Object clone() throws CloneNotSupportedException
      Standard Object clone method.
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException
    • copy

      public RectListManager copy()
      Similar to clone only strongly typed TODO Java 5: The use of covariant return types on clone() can eliminate this method.
    • size

      public int size()
      Returns the number of elements currently stored in this collection.
      Specified by:
      size in interface Collection<Rectangle>
    • isEmpty

      public boolean isEmpty()
      Returns true if this collection contains no elements.
      Specified by:
      isEmpty in interface Collection<Rectangle>
    • clear

      public void clear()
      Specified by:
      clear in interface Collection<Rectangle>
    • iterator

      public Iterator<Rectangle> iterator()
      Returns an iterator over the elements in this collection
      Specified by:
      iterator in interface Collection<Rectangle>
      Specified by:
      iterator in interface Iterable<Rectangle>
    • listIterator

      public ListIterator<Rectangle> listIterator()
      Returns a list iterator of the elements in this list (in proper sequence).
    • toArray

      public Object[] toArray()
      Specified by:
      toArray in interface Collection<Rectangle>
    • toArray

      public Object[] toArray(Object[] a)
      fill the given array a with values from my internal rects. when a is not large enough, a new array is allocated, filled and returned. the method works only, when a is a Object[] or a Rectange[]. When this is not the case, the a[] is just cleared.
      Specified by:
      toArray in interface Collection<Rectangle>
      Parameters:
      a - array to fill (must not be null!)
      Returns:
      the content of rects, either in a[] or a fresh array.
    • add

      public boolean add(Rectangle rect)
      Ensures that this collection contains the specified element
      Specified by:
      add in interface Collection<Rectangle>
      Parameters:
      rect - The rectangle to add
    • add

      protected void add(Rectangle rect, int l, int r)
      Ensures that this collection contains the specified element l is the lower bound index for insertion r is upper bound index for insertion.
      Parameters:
      rect - The rectangle to add
      l - the lowest possible index for a rect with greater 'x' coord.
      r - the highest possible index for a rect with greater 'x' coord.
    • addAll

      public boolean addAll(Collection<? extends Rectangle> c)
      Specified by:
      addAll in interface Collection<Rectangle>
    • contains

      public boolean contains(Object o)
      Specified by:
      contains in interface Collection<Rectangle>
    • containsAll

      public boolean containsAll(Collection<?> c)
      Returns true if this collection contains all of the elements in the specified collection.
      Specified by:
      containsAll in interface Collection<Rectangle>
    • containsAll

      public boolean containsAll(RectListManager rlm)
    • remove

      public boolean remove(Object o)
      Removes a single instance of the specified element from this collection, if it is present.
      Specified by:
      remove in interface Collection<Rectangle>
      Parameters:
      o - Object to remove an matching instance of.
    • remove

      public boolean remove(Rectangle rect)
      Removes a single instance of the specified Rectangle from this collection, if it is present.
      Parameters:
      rect - Rectangle to remove an matching instance of.
    • removeAll

      public boolean removeAll(Collection<?> c)
      Specified by:
      removeAll in interface Collection<Rectangle>
    • removeAll

      public boolean removeAll(RectListManager rlm)
    • retainAll

      public boolean retainAll(Collection<?> c)
      Specified by:
      retainAll in interface Collection<Rectangle>
    • retainAll

      public boolean retainAll(RectListManager rlm)
    • add

      public void add(RectListManager rlm)
      Adds the contents of rlm to this RectListManager. No collapsing of rectangles is done here the contents are simply added (you should generally call 'mergeRects' some time after this operation before using the contents of this RectListManager.
      Parameters:
      rlm - The RectListManager to add the contents of.
    • mergeRects

      public void mergeRects(int overhead, int lineOverhead)
    • subtract

      public void subtract(RectListManager rlm, int overhead, int lineOverhead)
    • splitRect

      protected void splitRect(Rectangle r, Rectangle sr, Rectangle[] splits)
    • insertRects

      protected void insertRects(Rectangle[] rects, int srcPos, int dstPos, int len)
    • ensureCapacity

      public void ensureCapacity(int sz)