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


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

the Graph::Easy manpage.


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.

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