Provided by: libgraph-easy-perl_0.75-2_all bug

NAME

       Graph::Easy::Layout::Path - Path management for Manhattan-style grids

SYNOPSIS

               use Graph::Easy;

               my $graph = Graph::Easy->new();

               my $bonn = Graph::Easy::Node->new(
                       name => 'Bonn',
               );
               my $berlin = Graph::Easy::Node->new(
                       name => 'Berlin',
               );

               $graph->add_edge ($bonn, $berlin);

               $graph->layout();

               print $graph->as_ascii( );

               # prints:

               # +------+     +--------+
               # | Bonn | --> | Berlin |
               # +------+     +--------+

DESCRIPTION

       "Graph::Easy::Layout::Scout" contains just the actual path-managing code for Graph::Easy,
       e.g. to create/destroy/maintain paths, node placement etc.

EXPORT

       Exports nothing.

SEE ALSO

       Graph::Easy.

METHODS into Graph::Easy

       This module injects the following methods into "Graph::Easy":

   _path_is_clear()
               $graph->_path_is_clear($path);

       For all points (x,y pairs) in the path, check that the cell is still free.  $path points
       to a list x,y,type pairs as in "[ [x,y,type], [x,y,type], ...]".

   _create_cell()
               my $cell = $graph->($edge,$x,$y,$type);

       Create a cell at "$x,$y" coordinates with type $type for the specified edge.

   _path_is_clear()
               $graph->_path_is_clear();

       For all points (x,y pairs) in the path, check that the cell is still free.  $path points
       to a list of "[ x,y,type, x,y,type, ...]".

       Returns true when the path is clear, false otherwise.

   _trace_path()
               my $path = my $graph->_trace_path($src,$dst,$edge);

       Find a free way from source node/group to destination node/group for the specified edge.
       Both source and destination need to be placed beforehand.

METHODS in Graph::Easy::Node

       This module injects the following methods into "Graph::Easy::Node":

   _near_places()
               my $node->_near_places();

       Take a node and return a list of possible placements around it and prune out already
       occupied cells. $d is the distance from the node border and defaults to two (for
       placements). Set it to one for adjacent cells.

   _shuffle_dir()
               my $dirs = $node->_shuffle_dir( [ 0,1,2,3 ], $dir);

       Take a ref to an array with four entries and shuffle them around according to $dir.

   _shift()
               my $dir = $node->_shift($degrees);

       Return a the "flow()" direction shifted by X degrees to $dir.

AUTHOR

       Copyright (C) 2004 - 2007 by Tels <http://bloodgate.com>.

       See the LICENSE file for information.