## 6.5  Graph Functions

`(add-links` `graph-snip<%> graph-snip<%>``)`      PROCEDURE

`(add-links` ```  graph-snip<%>  graph-snip<%>   (union false? (is-a?/c pen%))   (union false? (is-a?/c pen%))   (union false? (is-a?/c brush%))   (union false? (is-a?/c brush%)))````)`      PROCEDURE

`(add-links` ```  graph-snip<%>   graph-snip<%>   (union false? (is-a?/c pen%))   (union false? (is-a?/c pen%))   (union false? (is-a?/c brush%))   (union false? (is-a?/c brush%))   (union false? string)````)`      PROCEDURE

`(add-links` ```  graph-snip<%>   graph-snip<%>   (union false? (is-a?/c pen%))   (union false? (is-a?/c pen%))   (union false? (is-a?/c brush%))   (union false? (is-a?/c brush%))   number   number````)`      PROCEDURE

`(add-links` ```  graph-snip<%>   graph-snip<%>   (union false? (is-a?/c pen%))   (union false? (is-a?/c pen%))   (union false? (is-a?/c brush%))   (union false? (is-a?/c brush%))   number   number     (union false? string)````)`      PROCEDURE

The add-links function connects a parent snip to a child snip in the same pasteboard.

When called with two arguments, connects the snips using a blue/purple color scheme for the links. The first snip is the parent and the second snip is the child.

When called with six arguments, uses the two pens and brushes for the color scheme. The first pen and the first brush are used when the mouse cursor is over the snip (or a child or parent) and the second pen and brush are used when the mouse cursor is not over the snip. The brush is used to draw inside the arrow head and the pen is used to draw the border of the arrowhead and the line connecting the two snips.

When called with a final string argument, the string is used as a label on the edge.

When called with two final number arguments, they are dx and dy offsets for the head and the tail of the arrow, first dx and then dy.

When called with two numbers and a string as the final three arguments, the numbers and strings behave as they do separately.

`(add-links/text-colors` ```  graph-snip<%>   graph-snip<%>   (union false? (is-a?/c pen%))   (union false? (is-a?/c pen%))   (union false? (is-a?/c brush%))   (union false? (is-a?/c brush%))  (union false? (is-a?/c color%)))  (union false? (is-a?/c color%))   number   number     (union false? string)````)`      PROCEDURE

Behaves like `add-links`, except that seventh and eighth arguments specify colors for the text on the label (the arguments preceeding and following are treated like the last case of `add-links`).