
Tickit::Rect - a lightweight data structure representing a rectangle

use Tickit::Rect;
my $rect = Tickit::Rect->new(
top => 0, left => 5, lines => 3, cols => 10
);

Objects in this class represent a rectangle, by storing the top left corner coordinate and the size in lines and columns. This data structure is purely abstract and not tied to a particular window or coordinate system. It exists simply as a convenient data store containing some useful utility methods.

Construct a new rectangle of the given geometry, given by top, left and either lines and cols, or bottom and right.
If given a single string, this will be parsed in the form
(left,top)..(right,bottom)
If there is an intersection between the given rectangles, return it. If not, return undef.
Returns a new rectangle of the same size as the given one, moved down and to the right by the given argmuents (which may be negative)

Return the edge boundaries of the rectangle.
Return the size of the rectangle.
A convenient shortcut to generate the list of lines covered; being
$rect->top .. $rect->bottom - 1

Returns true if $other represents the same area as $rect.
Returns true if $other is entirely contained within the bounds of $rect.
Returns true if $other and $rect intersect at all, even if they overlap.
Returns a list of the non-overlapping regions covered by either $rect or $other.
In the trivial case that the two given rectangles do not touch, the result will simply be a list of the two initial rectangles. Otherwise a list of newly-constructed rectangles will be returned that covers the same area as the original two. This list will contain anywhere between 1 and 3 rectangles.
Returns a list of the non-overlapping regions covered by $rect but not by $other.
In the trivial case that $other completely covers $rect then the empty list is returned. In the trivial case that $other and $rect do not intersect then a list containing $rect is returned. Otherwise, a list of newly-constructed rectangles will be returned that covers the required area. This list will contain anywhere between 1 and 4 rectangles.

Paul Evans <leonerd@leonerd.org.uk>