# Module Graphviz

    module Graphviz: sig .. end

Interface with GraphViz

This module provides a basic interface with dot and neato, two programs of the GraphViz toolbox. These tools are available at the following URLs:

-     http://www.graphviz.org

-     http://www.research.att.com/sw/tools/graphviz

## Common stuff

Because the neato and dot engines present a lot of common points - in particular in the graph description language, large parts of the code is shared. The `CommonAttributes` module defines attributes of graphs, vertices and edges that are understood by the two engines. Then module `DotAttributes` and `NeatoAttributes` define attributes specific to dot and neato respectively.

### Common types and signatures

    type color = int

    type color_with_transparency = int32

The two least significant bytes encode the transparency information; the six most signification are the standard RGB color

    val color_to_color_with_transparency : color -> color_with_transparency

    type arrow_style = [ `Dot | `Inv | `Invdot | `Invodot | `None | `Normal | `Odot ]

    module type ATTRIBUTES = sig .. end

The `ATTRIBUTES` module type defines the interface for the engines.

### Common attributes

    module CommonAttributes: sig .. end

The `CommonAttributes` module defines attributes for graphs, vertices and edges that are available in the two engines, dot and neato.

## Interface with the dot engine

    module DotAttributes: sig .. end

`DotAttributes` extends `CommonAttributes` and implements `ATTRIBUTES`.

    module type GraphWithDotAttrs = sig .. end

Graph module with dot attributes

    module Dot: functor (X : sig

    Graph implementation. Sub-signature of Sig.G

    type t

    module V: sig .. endmodule E: sig .. endval iter_vertex : (V.t -> unit) -> t -> unitval iter_edges_e : (E.t -> unit) -> t -> unit

    Graph, vertex and edge attributes.

    val graph_attributes : t -> Graphviz.DotAttributes.graph listval default_vertex_attributes : t -> Graphviz.DotAttributes.vertex listval vertex_name : V.t -> stringval vertex_attributes : V.t -> Graphviz.DotAttributes.vertex listval get_subgraph : V.t -> Graphviz.DotAttributes.subgraph option
    The box (if exists) which the vertex belongs to. Boxes with same
    	   names are not distinguished and so they should have the same
    	   attributes.

    val default_edge_attributes : t -> Graphviz.DotAttributes.edge listval edge_attributes : E.t -> Graphviz.DotAttributes.edge listend) -> sig .. end

## The neato engine

    module NeatoAttributes: sig .. end

The `NeatoAttributes` module defines attributes for graphs, nodes and edges that are available in the neato engine.

    module Neato: functor (X : sig

    Graph implementation. Sub-signature of Sig.G.

    type t

    module V: sig .. endmodule E: sig .. endval iter_vertex : (V.t -> unit) -> t -> unitval iter_edges_e : (E.t -> unit) -> t -> unit

    Graph, vertex and edge attributes.

    val graph_attributes : t -> Graphviz.NeatoAttributes.graph listval default_vertex_attributes : t -> Graphviz.NeatoAttributes.vertex listval vertex_name : V.t -> stringval vertex_attributes : V.t -> Graphviz.NeatoAttributes.vertex listval get_subgraph : V.t -> Graphviz.NeatoAttributes.subgraph option
    The box (if exists) which the vertex belongs to. Boxes with same
    	   names are not distinguished and so they should have the same
    	   attributes.

    val default_edge_attributes : t -> Graphviz.NeatoAttributes.edge listval edge_attributes : E.t -> Graphviz.NeatoAttributes.edge listend) -> sig .. end