Graph::Easy::Layout::Path.3pm

Langue: en

Version: 2008-04-19 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

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.