---
name: "Graph::Easy::Layout::Path"
section: "3pm"
platform: "linux"
package: "libgraph-easy-perl"
version: "0.76-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Graph::Easy::Layout::Path"
---

# Graph::Easy::Layout::Path(3pm)

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

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.
