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
            osfameron@cpan.org
            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).

