1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
(*
* Here are some graph layout annotations.
*
* -- Allen
*)
structure GraphLayout =
struct
datatype format =
LABEL of string
| COLOR of string
| NODE_COLOR of string
| EDGE_COLOR of string
| TEXT_COLOR of string
| ARROW_COLOR of string
| BACKARROW_COLOR of string
| BORDER_COLOR of string
| BORDERLESS
| SHAPE of string
| ALGORITHM of string
| EDGEPATTERN of string
| DIR (* for internal use only! *)
val STYLE = Annotations.new(SOME(fn _ => "STYLE")) :
format list Annotations.property
type ('n,'e,'g) style =
{ edge : 'e Graph.edge -> format list,
node : 'n Graph.node -> format list,
graph : 'g -> format list
}
type layout = (format list, format list, format list) Graph.graph
fun makeLayout {node,edge,graph} G =
IsomorphicGraphView.map node edge graph G
fun makeLayout' G =
let val edgeColor = [COLOR "red"]
in makeLayout {node=fn (i,_) => [LABEL(Int.toString i)],
edge=fn _ => edgeColor,
graph=fn _ => []} G
end
end
|