Graph.XDotSourceReads layout information from xdot ASTs
Simple layout types
2D coordinates
Layout informations are parsed from xdot files (dot files with graphviz layout).
Each node or edge layout thus contains several lists of drawing operations.
See http://www.graphviz.org/doc/info/output.html#d:xdot to understand the details of the layout informations.
type node_layout = {n_name : string;Dot label
*)n_pos : pos;Center position
*)n_bbox : bounding_box;Bounding box
*)n_draw : XDotDraw.operation list;Shape drawing
*)n_ldraw : XDotDraw.operation list;Label drawing
*)}Each node has at least a position and a bounding box.
type cluster_layout = {c_pos : pos;c_bbox : bounding_box;c_draw : XDotDraw.operation list;c_ldraw : XDotDraw.operation list;}type edge_layout = {e_draw : XDotDraw.operation list;Shapes and curves
*)e_ldraw : XDotDraw.operation list;Label drawing
*)e_hdraw : XDotDraw.operation list;Head arrowhead drawing
*)e_tdraw : XDotDraw.operation list;Tail arrowhead drawing
*)e_hldraw : XDotDraw.operation list;Head label drawing
*)e_tldraw : XDotDraw.operation list;Tail label drawing
*)}val mk_node_layout :
name:string ->
pos:pos ->
bbox:bounding_box ->
draw:XDotDraw.operation list ->
ldraw:XDotDraw.operation list ->
node_layoutCreates a node layout
val mk_cluster_layout :
pos:pos ->
bbox:bounding_box ->
draw:XDotDraw.operation list ->
ldraw:XDotDraw.operation list ->
cluster_layoutCreates a cluster layout
val mk_edge_layout :
draw:XDotDraw.operation list ->
ldraw:XDotDraw.operation list ->
hdraw:XDotDraw.operation list ->
tdraw:XDotDraw.operation list ->
hldraw:XDotDraw.operation list ->
tldraw:XDotDraw.operation list ->
edge_layoutCreates an edge layout
Parsing and reading XDot
Instantiates a module which creates graph layouts from xdot files
Converts and reads various layout informations
bounding_box pos w h converts a bounding box of center pos, width w and height h from a Dot file to a pair of corners (lower left and upper right) in the world coordinate system.
Reads xdot layouts from the dot ast