NAME
Grid::Coord - abstract representation and manipulation of points and
rectangles
SYNOPSIS
use Grid::Coord
my $point1 = Grid::Coord->new(5,4); # point(y=>5, x=>4)
my $rect1 = Grid::Coord->new(2,3 => 6,5); # rectangle
print "TRUE" if $rect1->contains($point1);
my $rect2 = Grid::Coord->new(3,4 => 5,5); # another rectangle
my $rect3 = $rect1->overlap($rect2) # (3,4 => 5,5)
print $rect3->stringify; # "(3,4 => 5,5)"
print $rect3; # "(3,4 => 5,5)"
print "TRUE" if $rect3->equals(Grid::Coord->new(3,4 => 5,5));
print "TRUE" if $rect3 == Grid::Coord->new(3,4 => 5,5);
DESCRIPTION
Manage points or rectangles on a grid. This is generic, and could be
used for spreadsheets, ascii art, or other nefarious purposes.
USAGE
Constructor
Grid->Coord->new($y, $x);
Grid->Coord->new($min_y, $min_x, $max_y, $max_x);
Accessing coordinates
The "min_y", "min_x", "max_y", "max_x" functions:
print $coord->max_x; # get value
$coord->min_x(4); # set value to 4
Relationships with other Coords
$c3 = $c1->overlap($c2);
print "TRUE" if $rect1->contains($rect2);
print "TRUE" if $rect1->equals($rect2);
Overloaded operators
Four operators are overloaded:
* the stringification operator
So that "print $coord" does something reasonable
* the equality operator
so that "if ($coord1 == $coord2)" does the right thing.
* the add operator
So that "$c1 + $c2" is a synonym for "$c1-"offset($c2)>
* the subtract operator
So that "$c1 - $c2" is a synonym for "$c1-"delta($c2)>
Iterating
The iterator returns a Grid::Coord object for each cell in the current
Grid::Coord range.
my $it = $grid->cell_iterator; # or ->cell_iterator_rowwise
# my $it = $grid->cell_iterator_colwise; # top to bottom
while (my $cell = $it3->()) {
# do something to $cell
}
You can also iterate columns/rows with $grid->cells_iterator
$grid->rows_iterator
BUGS
None reported yet.
SUPPORT
From the author.
AUTHOR
[email protected]
http://osfameron.perlmonk.org/
COPYRIGHT
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included
with this module.
SEE ALSO
perl(1).