let vertex_attributes v = match v with
| Src fi ->
let color = match fi_type fi with
| Undef -> (`Fillcolor color_soft_yellow)
| PersistSelect -> (`Fillcolor color_soft_orange)
| Other -> (`Fillcolor color_soft_green)
in color::[`Shape `Plaintext]
| Slice ff ->
let color = match fi_type (M.ff_fi ff) with
| Undef -> assert false
| PersistSelect -> (`Fillcolor color_soft_orange)
| Other -> (`Fillcolor color_soft_green)
in color ::[`Shape `Ellipse]
| Action (_, crit) ->
let label = M.sprintf "%a" SlicingActions.print_crit crit in
let attrib = [] in
let attrib = (`Label label)::attrib in
let attrib = (`Fillcolor color_soft_pink)::attrib in
let attrib = (`Shape `Box)::attrib in
attrib
| OptSlicingLevel mode ->
let label = ("SliceCalls = "^(M.str_level_option mode)) in
let attrib = [] in
let attrib = (`Label label)::attrib in
let attrib = (`Fillcolor color_soft_purple)::attrib in
let attrib = (`Shape `Ellipse)::attrib in
let attrib = (`Fontsize 10)::attrib in
attrib
| OptSliceCallers b ->
let label = ("SliceCallers = "^(if b then "true" else "false")) in
let attrib = [] in
let attrib = (`Label label)::attrib in
let attrib = (`Fillcolor color_soft_purple)::attrib in
let attrib = (`Shape `Ellipse)::attrib in
let attrib = (`Fontsize 10)::attrib in
attrib